From 3c4e9a68cb5a6c12b266d8e2ae8ed9e109625919 Mon Sep 17 00:00:00 2001 From: altrusl Date: Sun, 15 Oct 2023 13:43:29 +0000 Subject: [PATCH] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20@=20vuesence?= =?UTF-8?q?/vue-faq@3928759b890bbce7b34a1d8510b10cab1fe3b7b8=20?= =?UTF-8?q?=F0=9F=9A=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 404.html | 4 ++-- assets/{app.0ed752d1.js => app.8ddeb0a2.js} | 2 +- ...k_ru_Chapter 1_ The Vue 3 Framework.md.0b158311.js} | 4 ++-- ...Chapter 1_ The Vue 3 Framework.md.0b158311.lean.js} | 2 +- assets/chunks/@localSearchIndexroot.82b40a0d.js | 1 + assets/chunks/@localSearchIndexroot.b272063a.js | 1 - ...rchBox.a8ac6602.js => VPLocalSearchBox.de88e89c.js} | 2 +- assets/chunks/{theme.46cffbb1.js => theme.88e180d0.js} | 2 +- backend/api.html | 6 +++--- backend/auth.html | 6 +++--- backend/backend.html | 6 +++--- backend/cors.html | 6 +++--- backend/protocols.html | 6 +++--- book/ru/Chapter 1_ The Vue 3 Framework.html | 10 +++++----- book/ru/index.html | 6 +++--- book/ru/not-implemented.html | 6 +++--- deployment/ci-cd.html | 6 +++--- deployment/docker.html | 6 +++--- deployment/github-actions.html | 6 +++--- deployment/hosting.html | 6 +++--- development/assets.html | 6 +++--- development/building.html | 6 +++--- development/ide.html | 6 +++--- development/libraries.html | 6 +++--- development/misc.html | 6 +++--- development/stores.html | 6 +++--- development/testing.html | 6 +++--- en/backend/api.html | 6 +++--- en/backend/auth.html | 6 +++--- en/backend/backend.html | 6 +++--- en/backend/cors.html | 6 +++--- en/backend/protocols.html | 6 +++--- en/deployment/ci-cd.html | 6 +++--- en/deployment/docker.html | 6 +++--- en/deployment/github-actions.html | 6 +++--- en/deployment/hosting.html | 6 +++--- en/development/assets.html | 6 +++--- en/development/building.html | 6 +++--- en/development/ide.html | 6 +++--- en/development/libraries.html | 6 +++--- en/development/misc.html | 6 +++--- en/development/stores.html | 6 +++--- en/development/testing.html | 6 +++--- en/frontend/about-frameworks.html | 6 +++--- en/frontend/architecture.html | 6 +++--- en/frontend/css-ui-libs.html | 6 +++--- en/frontend/learning.html | 6 +++--- en/frontend/spa-pwa-ssr-ssg.html | 6 +++--- en/index.html | 6 +++--- en/misc/CHANGELOG.html | 6 +++--- en/misc/cheat-sheets.html | 6 +++--- en/misc/contribute.html | 6 +++--- en/misc/glossary.html | 6 +++--- en/misc/introduction.html | 6 +++--- en/test.html | 6 +++--- frontend/about-frameworks.html | 6 +++--- frontend/architecture.html | 6 +++--- frontend/css-ui-libs.html | 6 +++--- frontend/learning.html | 6 +++--- frontend/spa-pwa-ssr-ssg.html | 6 +++--- hashmap.json | 2 +- index.html | 6 +++--- misc/CHANGELOG.html | 6 +++--- misc/cheat-sheets.html | 6 +++--- misc/contribute.html | 6 +++--- misc/glossary.html | 6 +++--- misc/introduction.html | 6 +++--- 67 files changed, 186 insertions(+), 186 deletions(-) rename assets/{app.0ed752d1.js => app.8ddeb0a2.js} (95%) rename assets/{book_ru_Chapter 1_ The Vue 3 Framework.md.e8ce3045.js => book_ru_Chapter 1_ The Vue 3 Framework.md.0b158311.js} (99%) rename assets/{book_ru_Chapter 1_ The Vue 3 Framework.md.e8ce3045.lean.js => book_ru_Chapter 1_ The Vue 3 Framework.md.0b158311.lean.js} (97%) create mode 100644 assets/chunks/@localSearchIndexroot.82b40a0d.js delete mode 100644 assets/chunks/@localSearchIndexroot.b272063a.js rename assets/chunks/{VPLocalSearchBox.a8ac6602.js => VPLocalSearchBox.de88e89c.js} (99%) rename assets/chunks/{theme.46cffbb1.js => theme.88e180d0.js} (99%) diff --git a/404.html b/404.html index c971b0ade..920aa2d6c 100644 --- a/404.html +++ b/404.html @@ -7,7 +7,7 @@ - + @@ -24,7 +24,7 @@
Skip to content

404

PAGE NOT FOUND

But if you don't change your direction, and if you keep looking, you may end up where you are heading.
- + \ No newline at end of file diff --git a/assets/app.0ed752d1.js b/assets/app.8ddeb0a2.js similarity index 95% rename from assets/app.0ed752d1.js rename to assets/app.8ddeb0a2.js index ce6958768..3911b3ef6 100644 --- a/assets/app.0ed752d1.js +++ b/assets/app.8ddeb0a2.js @@ -1 +1 @@ -import{s,a3 as i,a4 as u,a5 as c,a6 as l,a7 as d,a8 as f,a9 as m,aa as h,ab as A,ac as g,V as P,d as v,u as y,j as C,y as w,ad as _,ae as b,af as E,ag as R}from"./chunks/framework.477046d0.js";import{t as D}from"./chunks/theme.46cffbb1.js";function p(e){if(e.extends){const a=p(e.extends);return{...a,...e,async enhanceApp(t){a.enhanceApp&&await a.enhanceApp(t),e.enhanceApp&&await e.enhanceApp(t)}}}return e}const o=p(D),j=v({name:"VitePressApp",setup(){const{site:e}=y();return C(()=>{w(()=>{document.documentElement.lang=e.value.lang,document.documentElement.dir=e.value.dir})}),_(),b(),E(),o.setup&&o.setup(),()=>R(o.Layout)}});async function O(){const e=T(),a=S();a.provide(u,e);const t=c(e.route);return a.provide(l,t),a.component("Content",d),a.component("ClientOnly",f),Object.defineProperties(a.config.globalProperties,{$frontmatter:{get(){return t.frontmatter.value}},$params:{get(){return t.page.value.params}}}),o.enhanceApp&&await o.enhanceApp({app:a,router:e,siteData:m}),{app:a,router:e,data:t}}function S(){return h(j)}function T(){let e=s,a;return A(t=>{let n=g(t),r=null;return n&&(e&&(a=n),(e||a===n)&&(n=n.replace(/\.js$/,".lean.js")),r=P(()=>import(n),[])),s&&(e=!1),r},o.NotFound)}s&&O().then(({app:e,router:a,data:t})=>{a.go().then(()=>{i(a.route,t.site),e.mount("#app")})});export{O as createApp}; +import{s,a3 as i,a4 as u,a5 as c,a6 as l,a7 as d,a8 as f,a9 as m,aa as h,ab as A,ac as g,V as P,d as v,u as y,j as C,y as w,ad as _,ae as b,af as E,ag as R}from"./chunks/framework.477046d0.js";import{t as D}from"./chunks/theme.88e180d0.js";function p(e){if(e.extends){const a=p(e.extends);return{...a,...e,async enhanceApp(t){a.enhanceApp&&await a.enhanceApp(t),e.enhanceApp&&await e.enhanceApp(t)}}}return e}const o=p(D),j=v({name:"VitePressApp",setup(){const{site:e}=y();return C(()=>{w(()=>{document.documentElement.lang=e.value.lang,document.documentElement.dir=e.value.dir})}),_(),b(),E(),o.setup&&o.setup(),()=>R(o.Layout)}});async function O(){const e=T(),a=S();a.provide(u,e);const t=c(e.route);return a.provide(l,t),a.component("Content",d),a.component("ClientOnly",f),Object.defineProperties(a.config.globalProperties,{$frontmatter:{get(){return t.frontmatter.value}},$params:{get(){return t.page.value.params}}}),o.enhanceApp&&await o.enhanceApp({app:a,router:e,siteData:m}),{app:a,router:e,data:t}}function S(){return h(j)}function T(){let e=s,a;return A(t=>{let n=g(t),r=null;return n&&(e&&(a=n),(e||a===n)&&(n=n.replace(/\.js$/,".lean.js")),r=P(()=>import(n),[])),s&&(e=!1),r},o.NotFound)}s&&O().then(({app:e,router:a,data:t})=>{a.go().then(()=>{i(a.route,t.site),e.mount("#app")})});export{O as createApp}; diff --git a/assets/book_ru_Chapter 1_ The Vue 3 Framework.md.e8ce3045.js b/assets/book_ru_Chapter 1_ The Vue 3 Framework.md.0b158311.js similarity index 99% rename from assets/book_ru_Chapter 1_ The Vue 3 Framework.md.e8ce3045.js rename to assets/book_ru_Chapter 1_ The Vue 3 Framework.md.0b158311.js index 1eb0845da..192469250 100644 --- a/assets/book_ru_Chapter 1_ The Vue 3 Framework.md.e8ce3045.js +++ b/assets/book_ru_Chapter 1_ The Vue 3 Framework.md.0b158311.js @@ -89,7 +89,7 @@ import{_ as l,o as p,c as t,k as n,a as s,t as e,Q as a}from"./chunks/framework. </script>
<script setup>
 import { ref } from "vue";
 const _hello = ref("Hello World");
-</script>

Две строки кода! Это трудно превзойти. Поскольку мы добавили атрибут setup в тег script, сборщик знает, что все, что мы здесь делаем, относится к области Composition API, и все функции, переменные и константы автоматически отображаются в шаблон. Нет необходимости определять экспорт. Если нам что-то нужно, мы импортируем это напрямую и используем. Кроме того, теперь у нас есть несколько дополнительных преимуществ, например, следующие:

Но подождите, вы можете заметить, что я определяю реактивную переменную как константу! Да, это так. И нет, это не ошибка. В JavaScript константа указывает на конкретное неизменяемое значение, которым в данном случае является объект, но это относится только к объекту, а не к его членам. Конструктор ref() возвращает объект, поэтому константа применяется к ссылке на объект, и мы можем изменять значения его членов. Если вы работали с указателями в Java, C или другом подобном языке, то, возможно, узнаете эту концепцию как использование указателей. Однако за все это приходится платить. Для того чтобы получить доступ к значению и изменить его, теперь необходимо получить доступ к атрибуту значение объекта. Вот пример:

js
_hello.value = "Некоторое другое значение";
_hello.value = "Некоторое другое значение";

Но, в то же время, ничего не изменилось в способе доступа к этой переменной в шаблоне:

vue
<div>{{_hello}}</div>
<div>{{_hello}}</div>

Кроме того, каждый раз, когда переменная объявляется как реактивная с помощью конструктора ref(), необходимо ссылаться на ее значение в формате constant_name.value, и как constant_name в шаблоне (HTML). Когда имя константы используется в шаблоне, Vue уже знает, как получить доступ к ее значению, и вам не нужно ссылаться на нее явно, как в JavaScript.

Совет

Выработайте или примите соглашение о коде (code convention), чтобы знать, когда идентификатор относится к переменной, константе, функции, классу и т. д.

Изучение встроенных директив в Vue 3

В Vue также предусмотрены специальные атрибуты HTML, называемые директивами. Директива объявляется в открывающем теге HTML-элемента и влияет на динамическое поведение или функциональность этого элемента. Мы также можем создавать собственные директивы в Vue. Те из них, которые предоставляются фреймворком, имеют специальную нотацию, начинающуюся с v-. В рамках данной книги рассмотрим наиболее часто используемые директивы Vue:

v-bind: (сокращение ":")

Директива v-bind: связывает значение HTML-атрибута со значением переменной JavaScript. Если переменная является реактивной, то при каждом обновлении ее значения оно будет отражаться в html. Если переменная не реактивная, то она будет использоваться только один раз при первоначальном рендеринге HTML. Чаще всего мы используем только сокращенный префикс : (двоеточие). Например, реактивная переменная my_profile_picture содержит веб-адрес к картинке:

html
<img :src="my_profile_picture" />
<img :src="my_profile_picture" />

Атрибут src получит значение переменной my_profile_picture

v-show

Эта директива показывает или скрывает элемент, не удаляя его из документа. Она эквивалентна модификации атрибута CSS display. Она ожидает переменную, которая дает булево значение (или то, что может быть интерпретировано как true или непустое). Например, переменная loading имеет булево значение:

vue
<div v-show="loading">...</div>
<div v-show="loading">...</div>

Этот div появится, когда переменная loading будет равна true.

Важно иметь в виду, что v-show будет использовать стиль объекта, чтобы отобразить его или нет, но элемент все равно будет частью Document Object Model (DOM)

v-if.

v-if, v-else и v-else-if

Эти директивы ведут себя так же, как и условные предложения в JavaScript, показывая и скрывая элемент в зависимости от значения, определяемого переданным выражением. Они похожи на v-show в том смысле, что показывают или скрывают элемент, но с той разницей, что они полностью удаляют элемент из DOM. Из-за этого при неправильном использовании в больших масштабах с элементами, часто меняющими свое состояние, они могут быть дороги в вычислительном отношении, так как фреймворку приходится выполнять больше операций для манипулирования DOM, в отличие от v-show, когда нужно изменить только стиль отображения.

Совет

Используйте v-if для показа или отображения элементов, которые не будут переключаться после показа или скрытия (и предпочтительно, если начальное состояние скрыто). Используйте v-show, если элемент будет часто показываться/скрываться. Это улучшит производительность при отображении больших списков элементов.

v-for и :key

В сочетании эти два атрибута ведут себя подобно циклу for в JavaScript. Они создают столько копий элемента, сколько прописано в итераторе, каждая из которых имеет соответствующее интерполированное значение. Это очень удобно для отображения коллекций элементов данных. Атрибут :key используется внутри цикла для более эффективного отслеживания изменений и должен ссылаться на уникальный атрибут элемента, по которому выполняется цикл, - например, на поле id объекта или на индекс в массиве, если индексы не меняются. Вот пример:

vue
<span v-for="i in 5" :key="i"> {{i}} </span>
<span v-for="i in 5" :key="i"> {{i}} </span>

Таким образом на веб-странице будет отображено пять элементов span с интерполяцией i, что выглядит следующим образом:

1 2 3 4 5

v-model

Эта директива - чистая магия. При присоединении к элементу ввода (input, textarea, select и т.д.) она присваивает значение, возвращаемое HTML-элементом, ссылаемой переменной, поддерживая тем самым синхронизацию состояния DOM и JavaScript, что называется двусторонним связыванием. Вот пример:

vue
<input type="text" v-model="name" \\>
<input type="text" v-model="name" \\>

Когда пользователь вводит текст в HTML, переменной name в JavaScript сразу же присваивается это значение. В этих примерах мы используем примитивные типы данных, такие как числа и строки, но мы можем использовать и более сложные значения, такие как объекты или массивы. Подробнее об этом будет рассказано в главе 4 Композиция пользовательского интерфейса с компонентами, когда мы рассмотрим компоненты в деталях.

v-on: (и сокращение @)

Эта директива ведет себя несколько иначе, чем предыдущие. Она ожидает не переменную, а функцию или выражение, и связывает HTML-событие с функцией JavaScript для его выполнения. Событие должно быть объявлено сразу после двоеточия. Например, чтобы отреагировать на событие click на кнопке мыши, мы напишем следующее:

vue
<button v-on:click="printPage()">Print</button>
<button v-on:click="printPage()">Print</button>

Когда кнопка вызывает событие click, будет выполнена функция JavaScript printPage(). Кроме того, для этой директивы чаще используется сокращение, которое мы и будем использовать в дальнейшем в этой книге: просто замените v-on: на @. Тогда предыдущий пример превратится в следующий:

vue
<button @click="printPage()">Print\\</button>
<button @click="printPage()">Print\\</button>

Полный список встроенных директив можно найти в официальной документации здесь: https://vuejs.org/api/built-in-directives.html. По мере продвижения вперед мы увидим и другие.

До сих пор мы видели, что приложения Vue 3 строятся с помощью компонентов, которые мы можем использовать в нашем HTML и которые мы создаем с помощью SFC. Фреймворк также предоставляет нам директивы для работы с элементами HTML, но это еще не все. В следующем разделе мы увидим, что фреймворк также предоставляет несколько удобных готовых компонентов, которые мы можем использовать.

Встроенные компоненты

Фреймворк также предоставляет нам несколько встроенных компонентов, которые мы можем использовать, не импортируя их явно в каждый SFC. Я привел здесь небольшое описание каждого из них, поэтому за синтаксисом и примерами можно обратиться к официальной документации (см. https://vuejs.org/api/built-in-components.html):

vue
<script setup>
+</script>

Две строки кода! Это трудно превзойти. Поскольку мы добавили атрибут setup в тег script, сборщик знает, что все, что мы здесь делаем, относится к области Composition API, и все функции, переменные и константы автоматически отображаются в шаблон. Нет необходимости определять экспорт. Если нам что-то нужно, мы импортируем это напрямую и используем. Кроме того, теперь у нас есть несколько дополнительных преимуществ, например, следующие:

Но подождите, вы можете заметить, что я определяю реактивную переменную как константу! Да, это так. И нет, это не ошибка. В JavaScript константа указывает на конкретное неизменяемое значение, которым в данном случае является объект, но это относится только к объекту, а не к его членам. Конструктор ref() возвращает объект, поэтому константа применяется к ссылке на объект, и мы можем изменять значения его членов. Если вы работали с указателями в Java, C или другом подобном языке, то, возможно, узнаете эту концепцию как использование указателей. Однако за все это приходится платить. Для того чтобы получить доступ к значению и изменить его, теперь необходимо получить доступ к атрибуту значение объекта. Вот пример:

js
_hello.value = "Некоторое другое значение";
_hello.value = "Некоторое другое значение";

Но, в то же время, ничего не изменилось в способе доступа к этой переменной в шаблоне:

vue
<div>{{_hello}}</div>
<div>{{_hello}}</div>

Кроме того, каждый раз, когда переменная объявляется как реактивная с помощью конструктора ref(), необходимо ссылаться на ее значение в формате constant_name.value, и как constant_name в шаблоне (HTML). Когда имя константы используется в шаблоне, Vue уже знает, как получить доступ к ее значению, и вам не нужно ссылаться на нее явно, как в JavaScript.

Совет

Выработайте или примите соглашение о коде (code convention), чтобы знать, когда идентификатор относится к переменной, константе, функции, классу и т. д.

Изучение встроенных директив в Vue 3

В Vue также предусмотрены специальные атрибуты HTML, называемые директивами. Директива объявляется в открывающем теге HTML-элемента и влияет на динамическое поведение или функциональность этого элемента. Мы также можем создавать собственные директивы в Vue. Те из них, которые предоставляются фреймворком, имеют специальную нотацию, начинающуюся с v-. В рамках данной книги рассмотрим наиболее часто используемые директивы Vue:

v-bind: (сокращение ":")

Директива v-bind: связывает значение HTML-атрибута со значением переменной JavaScript. Если переменная является реактивной, то при каждом обновлении ее значения оно будет отражаться в html. Если переменная не реактивная, то она будет использоваться только один раз при первоначальном рендеринге HTML. Чаще всего мы используем только сокращенный префикс : (двоеточие). Например, реактивная переменная my_profile_picture содержит веб-адрес к картинке:

html
<img :src="my_profile_picture" />
<img :src="my_profile_picture" />

Атрибут src получит значение переменной my_profile_picture

v-show

Эта директива показывает или скрывает элемент, не удаляя его из документа. Она эквивалентна модификации атрибута CSS display. Она ожидает переменную, которая дает булево значение (или то, что может быть интерпретировано как true или непустое). Например, переменная loading имеет булево значение:

vue
<div v-show="loading">...</div>
<div v-show="loading">...</div>

Этот div появится, когда переменная loading будет равна true.

Важно иметь в виду, что v-show будет использовать стиль объекта, чтобы отобразить его или нет, но элемент все равно будет частью Document Object Model (DOM)

v-if, v-else и v-else-if

Эти директивы ведут себя так же, как и условные предложения в JavaScript, показывая и скрывая элемент в зависимости от значения, определяемого переданным выражением. Они похожи на v-show в том смысле, что показывают или скрывают элемент, но с той разницей, что они полностью удаляют элемент из DOM. Из-за этого при неправильном использовании в больших масштабах с элементами, часто меняющими свое состояние, они могут быть дороги в вычислительном отношении, так как фреймворку приходится выполнять больше операций для манипулирования DOM, в отличие от v-show, когда нужно изменить только стиль отображения.

Совет

Используйте v-if для показа или отображения элементов, которые не будут переключаться после показа или скрытия (и предпочтительно, если начальное состояние скрыто). Используйте v-show, если элемент будет часто показываться/скрываться. Это улучшит производительность при отображении больших списков элементов.

v-for и :key

В сочетании эти два атрибута ведут себя подобно циклу for в JavaScript. Они создают столько копий элемента, сколько прописано в итераторе, каждая из которых имеет соответствующее интерполированное значение. Это очень удобно для отображения коллекций элементов данных. Атрибут :key используется внутри цикла для более эффективного отслеживания изменений и должен ссылаться на уникальный атрибут элемента, по которому выполняется цикл, - например, на поле id объекта или на индекс в массиве, если индексы не меняются. Вот пример:

vue
<span v-for="i in 5" :key="i"> {{i}} </span>
<span v-for="i in 5" :key="i"> {{i}} </span>

Таким образом на веб-странице будет отображено пять элементов span с интерполяцией i, что выглядит следующим образом:

1 2 3 4 5

v-model

Эта директива - чистая магия. При присоединении к элементу ввода (input, textarea, select и т.д.) она присваивает значение, возвращаемое HTML-элементом, ссылаемой переменной, поддерживая тем самым синхронизацию состояния DOM и JavaScript, что называется двусторонним связыванием. Вот пример:

vue
<input type="text" v-model="name" \\>
<input type="text" v-model="name" \\>

Когда пользователь вводит текст в HTML, переменной name в JavaScript сразу же присваивается это значение. В этих примерах мы используем примитивные типы данных, такие как числа и строки, но мы можем использовать и более сложные значения, такие как объекты или массивы. Подробнее об этом будет рассказано в главе 4 Композиция пользовательского интерфейса с компонентами, когда мы рассмотрим компоненты в деталях.

v-on: (и сокращение @)

Эта директива ведет себя несколько иначе, чем предыдущие. Она ожидает не переменную, а функцию или выражение, и связывает HTML-событие с функцией JavaScript для его выполнения. Событие должно быть объявлено сразу после двоеточия. Например, чтобы отреагировать на событие click на кнопке мыши, мы напишем следующее:

vue
<button v-on:click="printPage()">Print</button>
<button v-on:click="printPage()">Print</button>

Когда кнопка вызывает событие click, будет выполнена функция JavaScript printPage(). Кроме того, для этой директивы чаще используется сокращение, которое мы и будем использовать в дальнейшем в этой книге: просто замените v-on: на @. Тогда предыдущий пример превратится в следующий:

vue
<button @click="printPage()">Print\\</button>
<button @click="printPage()">Print\\</button>

Полный список встроенных директив можно найти в официальной документации здесь: https://vuejs.org/api/built-in-directives.html. По мере продвижения вперед мы увидим и другие.

До сих пор мы видели, что приложения Vue 3 строятся с помощью компонентов, которые мы можем использовать в нашем HTML и которые мы создаем с помощью SFC. Фреймворк также предоставляет нам директивы для работы с элементами HTML, но это еще не все. В следующем разделе мы увидим, что фреймворк также предоставляет несколько удобных готовых компонентов, которые мы можем использовать.

Встроенные компоненты

Фреймворк также предоставляет нам несколько встроенных компонентов, которые мы можем использовать, не импортируя их явно в каждый SFC. Я привел здесь небольшое описание каждого из них, поэтому за синтаксисом и примерами можно обратиться к официальной документации (см. https://vuejs.org/api/built-in-components.html):

vue
<script setup>
 import EditItem from "EditItem.vue";
 import ViewItem from "ViewItem.vue";
 import { ref } from "vue";
@@ -109,4 +109,4 @@ import{_ as l,o as p,c as t,k as n,a as s,t as e,Q as a}from"./chunks/framework.
 <template>     
   <component :is="action"></component>     
   <button @click="action = 'EditItem'">Edit</button>
-</template>

В этом простом примере, когда пользователь нажмет кнопку Edit, значение action изменится на EditItem, и компонент заменится. Документацию можно найти здесь:https://vuejs.org/api/built-in-special-elements.html.

Поняв, что такое фреймворки и компоненты, мы теперь лучше подготовлены к дальнейшей работе.

Кодовые соглашения (code conventions) в книге

В этой книге мы будем использовать набор кодовых соглашений и рекомендаций, которые являются хорошей практикой для Vue 3. Они помогут вам не только понять примеры, приведенные в этой книге, но и код, который вы можете встретить в природе, поскольку все больше разработчиков используют его. Давайте начнем с самого начала.

Переменные и пропсы

Они всегда пишутся в нижнем регистре, а пробелы заменяются знаком подчеркивания, например, total_count и person_id.

Константы

Ссылки на инжектируемые объекты начинаются со знака $, например, $router, $modals и $notifications.

Ссылки на реактивные данные начинаются с _ и набираются в змеином регистре (snake case), например, _total и _first_input.

Ссылки на константные значения обозначаются заглавными буквами, например, OPTION и LANGUAGE_CODE.

Функции-конструкторы для инжектируемых зависимостей будут начинаться с use, например, const $store=useStore().

Имена классов и компонентов

Они записываются в PascalCase (каждое слово начинается с буквы верхнего регистра), например, Person, Task и QueueBuilder.

Функции, методы, события и имена файлов

Они пишутся в CamelCase, например, doSubscribe() и processQueue().

"Экземпляры

Экземпляры будут иметь абстрактное имя, за которым следует слово Service в случае обычных JavaScript-объектов, предоставляющих функции, Model для моделей состояний и так далее. Мы будем использовать сервисы для инкапсуляции функциональности.

Например: const projectService=new ProjectService().

Совет

В своей команде всегда используйте кодовые соглашения, с которыми все согласны. Это сделает код более читаемым и удобным для сопровождения. Можно также порекомендовать использовать линкер (процессор для фиксации соглашений в коде).

Как уже говорилось, эти соглашения набирают популярность, поэтому вы можете встретить их во многих проектах. Однако они не являются обязательными стандартами и уж точно не предписаны фреймворком. Вы можете писать все заглавными буквами, если это ваш стиль, но на самом деле важно, чтобы вы и ваша команда определили и соблюдали свои собственные соглашения в последовательной манере. В конечном итоге важно, чтобы при написании кода у всех нас был общий язык.

Подведение итогов

В этой главе мы прошли путь от основ библиотек и фреймворков до директив Vue 3, компонентов и даже кодовых соглашений. Эти понятия все еще немного абстрактны, поэтому мы будем доводить их до реализации по мере продвижения по книге и работы с реальным кодом. Однако сейчас мы готовы для изучения принципов проектирования и паттернов в следующей главе.

Вопросы для проверки

Для того чтобы помочь вам закрепить содержание этой главы, вы можете воспользоваться следующими вопросами:

Если вы можете быстро ответить на эти вопросы в уме, то вы готовы к работе! Если нет, то, возможно, вам стоит кратко просмотреть главу, чтобы убедиться, что у вас есть основа для дальнейшей работы.

`,103);function C(o,k,A,_,f,D){return p(),t("div",null,[E,n("p",null,[s("В разделе "),i,s(" мы определяем тег "),y,s(" и импортируем Vue из бесплатной "),g,s(" ("),u,s("). При этом создается глобальная переменная "),d,s(", которая открывает все методы и функции фреймворка. Внутри нашего тега "),h,s(" мы объявляем элемент "),v,s(" с "),m,s(". Это определяет, где будет размещено наше небольшое приложение и какой частью страницы будет управлять фреймворк Vue. Обратите внимание на содержимое "),n("strong",null,"div: "+e(o.message),1),s(". Двойные фигурные скобки определяют точку, в которой содержимое будет заменено во время выполнения на значение переменной "),F,s(", которую мы определяем в JavaScript. Это называется "),q,s(" и является основным способом отображения значения (строки, числа и т.д.) на веб-странице.")]),b])}const S=l(c,[["render",C]]);export{V as __pageData,S as default}; +</template>

В этом простом примере, когда пользователь нажмет кнопку Edit, значение action изменится на EditItem, и компонент заменится. Документацию можно найти здесь:https://vuejs.org/api/built-in-special-elements.html.

Поняв, что такое фреймворки и компоненты, мы теперь лучше подготовлены к дальнейшей работе.

Кодовые соглашения (code conventions) в книге

В этой книге мы будем использовать набор кодовых соглашений и рекомендаций, которые являются хорошей практикой для Vue 3. Они помогут вам не только понять примеры, приведенные в этой книге, но и код, который вы можете встретить в природе, поскольку все больше разработчиков используют его. Давайте начнем с самого начала.

Переменные и пропсы

Они всегда пишутся в нижнем регистре, а пробелы заменяются знаком подчеркивания, например, total_count и person_id.

Константы

Ссылки на инжектируемые объекты начинаются со знака $, например, $router, $modals и $notifications.

Ссылки на реактивные данные начинаются с _ и набираются в змеином регистре (snake case), например, _total и _first_input.

Ссылки на константные значения обозначаются заглавными буквами, например, OPTION и LANGUAGE_CODE.

Функции-конструкторы для инжектируемых зависимостей будут начинаться с use, например, const $store=useStore().

Имена классов и компонентов

Они записываются в PascalCase (каждое слово начинается с буквы верхнего регистра), например, Person, Task и QueueBuilder.

Функции, методы, события и имена файлов

Они пишутся в CamelCase, например, doSubscribe() и processQueue().

"Экземпляры

Экземпляры будут иметь абстрактное имя, за которым следует слово Service в случае обычных JavaScript-объектов, предоставляющих функции, Model для моделей состояний и так далее. Мы будем использовать сервисы для инкапсуляции функциональности.

Например: const projectService=new ProjectService().

Совет

В своей команде всегда используйте кодовые соглашения, с которыми все согласны. Это сделает код более читаемым и удобным для сопровождения. Можно также порекомендовать использовать линкер (процессор для фиксации соглашений в коде).

Как уже говорилось, эти соглашения набирают популярность, поэтому вы можете встретить их во многих проектах. Однако они не являются обязательными стандартами и уж точно не предписаны фреймворком. Вы можете писать все заглавными буквами, если это ваш стиль, но на самом деле важно, чтобы вы и ваша команда определили и соблюдали свои собственные соглашения в последовательной манере. В конечном итоге важно, чтобы при написании кода у всех нас был общий язык.

Подведение итогов

В этой главе мы прошли путь от основ библиотек и фреймворков до директив Vue 3, компонентов и даже кодовых соглашений. Эти понятия все еще немного абстрактны, поэтому мы будем доводить их до реализации по мере продвижения по книге и работы с реальным кодом. Однако сейчас мы готовы для изучения принципов проектирования и паттернов в следующей главе.

Вопросы для проверки

Для того чтобы помочь вам закрепить содержание этой главы, вы можете воспользоваться следующими вопросами:

Если вы можете быстро ответить на эти вопросы в уме, то вы готовы к работе! Если нет, то, возможно, вам стоит кратко просмотреть главу, чтобы убедиться, что у вас есть основа для дальнейшей работы.

`,102);function C(o,k,A,_,f,D){return p(),t("div",null,[E,n("p",null,[s("В разделе "),i,s(" мы определяем тег "),y,s(" и импортируем Vue из бесплатной "),g,s(" ("),u,s("). При этом создается глобальная переменная "),d,s(", которая открывает все методы и функции фреймворка. Внутри нашего тега "),h,s(" мы объявляем элемент "),v,s(" с "),m,s(". Это определяет, где будет размещено наше небольшое приложение и какой частью страницы будет управлять фреймворк Vue. Обратите внимание на содержимое "),n("strong",null,"div: "+e(o.message),1),s(". Двойные фигурные скобки определяют точку, в которой содержимое будет заменено во время выполнения на значение переменной "),F,s(", которую мы определяем в JavaScript. Это называется "),q,s(" и является основным способом отображения значения (строки, числа и т.д.) на веб-странице.")]),b])}const S=l(c,[["render",C]]);export{V as __pageData,S as default}; diff --git a/assets/book_ru_Chapter 1_ The Vue 3 Framework.md.e8ce3045.lean.js b/assets/book_ru_Chapter 1_ The Vue 3 Framework.md.0b158311.lean.js similarity index 97% rename from assets/book_ru_Chapter 1_ The Vue 3 Framework.md.e8ce3045.lean.js rename to assets/book_ru_Chapter 1_ The Vue 3 Framework.md.0b158311.lean.js index 1b8d8aa81..f70898289 100644 --- a/assets/book_ru_Chapter 1_ The Vue 3 Framework.md.e8ce3045.lean.js +++ b/assets/book_ru_Chapter 1_ The Vue 3 Framework.md.0b158311.lean.js @@ -1 +1 @@ -import{_ as l,o as p,c as t,k as n,a as s,t as e,Q as a}from"./chunks/framework.477046d0.js";const r="/assets/Figure_1.01_B18602.d9795883.jpg",V=JSON.parse('{"title":"Фреймворк Vue 3","description":"","frontmatter":{},"headers":[],"relativePath":"book/ru/Chapter 1_ The Vue 3 Framework.md","filePath":"book/ru/Chapter 1_ The Vue 3 Framework.md"}'),c={name:"book/ru/Chapter 1_ The Vue 3 Framework.md"},E=a("",28),i=n("strong",null,"head",-1),y=n("strong",null,"script",-1),g=n("strong",null,"сети доставки контента",-1),u=n("strong",null,"CDN",-1),d=n("strong",null,"Vue",-1),h=n("strong",null,"body",-1),v=n("strong",null,"div",-1),m=n("strong",null,'id="app"',-1),F=n("strong",null,"message",-1),q=n("strong",null,"интерполяцией",-1),b=a("",103);function C(o,k,A,_,f,D){return p(),t("div",null,[E,n("p",null,[s("В разделе "),i,s(" мы определяем тег "),y,s(" и импортируем Vue из бесплатной "),g,s(" ("),u,s("). При этом создается глобальная переменная "),d,s(", которая открывает все методы и функции фреймворка. Внутри нашего тега "),h,s(" мы объявляем элемент "),v,s(" с "),m,s(". Это определяет, где будет размещено наше небольшое приложение и какой частью страницы будет управлять фреймворк Vue. Обратите внимание на содержимое "),n("strong",null,"div: "+e(o.message),1),s(". Двойные фигурные скобки определяют точку, в которой содержимое будет заменено во время выполнения на значение переменной "),F,s(", которую мы определяем в JavaScript. Это называется "),q,s(" и является основным способом отображения значения (строки, числа и т.д.) на веб-странице.")]),b])}const S=l(c,[["render",C]]);export{V as __pageData,S as default}; +import{_ as l,o as p,c as t,k as n,a as s,t as e,Q as a}from"./chunks/framework.477046d0.js";const r="/assets/Figure_1.01_B18602.d9795883.jpg",V=JSON.parse('{"title":"Фреймворк Vue 3","description":"","frontmatter":{},"headers":[],"relativePath":"book/ru/Chapter 1_ The Vue 3 Framework.md","filePath":"book/ru/Chapter 1_ The Vue 3 Framework.md"}'),c={name:"book/ru/Chapter 1_ The Vue 3 Framework.md"},E=a("",28),i=n("strong",null,"head",-1),y=n("strong",null,"script",-1),g=n("strong",null,"сети доставки контента",-1),u=n("strong",null,"CDN",-1),d=n("strong",null,"Vue",-1),h=n("strong",null,"body",-1),v=n("strong",null,"div",-1),m=n("strong",null,'id="app"',-1),F=n("strong",null,"message",-1),q=n("strong",null,"интерполяцией",-1),b=a("",102);function C(o,k,A,_,f,D){return p(),t("div",null,[E,n("p",null,[s("В разделе "),i,s(" мы определяем тег "),y,s(" и импортируем Vue из бесплатной "),g,s(" ("),u,s("). При этом создается глобальная переменная "),d,s(", которая открывает все методы и функции фреймворка. Внутри нашего тега "),h,s(" мы объявляем элемент "),v,s(" с "),m,s(". Это определяет, где будет размещено наше небольшое приложение и какой частью страницы будет управлять фреймворк Vue. Обратите внимание на содержимое "),n("strong",null,"div: "+e(o.message),1),s(". Двойные фигурные скобки определяют точку, в которой содержимое будет заменено во время выполнения на значение переменной "),F,s(", которую мы определяем в JavaScript. Это называется "),q,s(" и является основным способом отображения значения (строки, числа и т.д.) на веб-странице.")]),b])}const S=l(c,[["render",C]]);export{V as __pageData,S as default}; diff --git a/assets/chunks/@localSearchIndexroot.82b40a0d.js b/assets/chunks/@localSearchIndexroot.82b40a0d.js new file mode 100644 index 000000000..0c1bd2e6a --- /dev/null +++ b/assets/chunks/@localSearchIndexroot.82b40a0d.js @@ -0,0 +1 @@ +const e='{"documentCount":76,"nextId":76,"documentIds":{"0":"/backend/api.html#абстракция-канала-связи-с-бэкендом","1":"/backend/api.html#api-сервис","2":"/backend/auth.html#аутентификация-и-авторизация","3":"/backend/backend.html#варианты-задеиствовать-свои-бэкенд-для-фронтендера","4":"/backend/cors.html#cors","5":"/backend/protocols.html#протоколы-to-rest-или-не-rest","6":"/book/ru/Chapter 1_ The Vue 3 Framework.html#фреимворк-vue-3","7":"/book/ru/Chapter 1_ The Vue 3 Framework.html#прогрессивныи-фреимворк","8":"/book/ru/Chapter 1_ The Vue 3 Framework.html#использование-vue-в-веб-приложении","9":"/book/ru/Chapter 1_ The Vue 3 Framework.html#путь-сборщика-лучшии-путь","10":"/book/ru/Chapter 1_ The Vue 3 Framework.html#понимание-однофаиловых-компонентов","11":"/book/ru/Chapter 1_ The Vue 3 Framework.html#разные-варианты-options-composition-и-script-setup-api","12":"/book/ru/Chapter 1_ The Vue 3 Framework.html#изучение-встроенных-директив-в-vue-3","13":"/book/ru/Chapter 1_ The Vue 3 Framework.html#v-bind-сокращение","14":"/book/ru/Chapter 1_ The Vue 3 Framework.html#v-show","15":"/book/ru/Chapter 1_ The Vue 3 Framework.html#v-if-v-else-и-v-else-if","16":"/book/ru/Chapter 1_ The Vue 3 Framework.html#v-for-и-key","17":"/book/ru/Chapter 1_ The Vue 3 Framework.html#v-model","18":"/book/ru/Chapter 1_ The Vue 3 Framework.html#v-on-и-сокращение","19":"/book/ru/Chapter 1_ The Vue 3 Framework.html#встроенные-компоненты","20":"/book/ru/Chapter 1_ The Vue 3 Framework.html#кодовые-соглашения-code-conventions-в-книге","21":"/book/ru/Chapter 1_ The Vue 3 Framework.html#переменные-и-пропсы","22":"/book/ru/Chapter 1_ The Vue 3 Framework.html#константы","23":"/book/ru/Chapter 1_ The Vue 3 Framework.html#имена-классов-и-компонентов","24":"/book/ru/Chapter 1_ The Vue 3 Framework.html#функции-методы-события-и-имена-фаилов","25":"/book/ru/Chapter 1_ The Vue 3 Framework.html#экземпляры","26":"/book/ru/Chapter 1_ The Vue 3 Framework.html#подведение-итогов","27":"/book/ru/Chapter 1_ The Vue 3 Framework.html#вопросы-для-проверки","28":"/book/ru/#о-книге","29":"/book/ru/#vue-js-3-design-patterns-and-best-practices","30":"/book/ru/not-implemented.html#глава-еще-не-переведена","31":"/deployment/ci-cd.html#ci-cd","32":"/deployment/docker.html#docker","33":"/deployment/github-actions.html#github-actions","34":"/deployment/hosting.html#хостинг","35":"/development/assets.html#ресурсы-приложения","36":"/development/assets.html#baseicon","37":"/development/assets.html#icons-js","38":"/development/building.html#создание-и-сборка-приложения","39":"/development/ide.html#настроика-ide","40":"/development/libraries.html#подскажите-удобную-библиотеку","41":"/development/misc.html#полезные-советы","42":"/development/stores.html#state-management-во-vue-3","43":"/development/testing.html#тестирование","44":"/frontend/about-frameworks.html#о-фронтенд-фреимворках","45":"/frontend/architecture.html#архитектура-фронтэнд-приложении","46":"/frontend/architecture.html#избегаите-зависимостеи","47":"/frontend/architecture.html#используите-обертки-над-компонентами-ui-библиотек-и-сторонних-утилит","48":"/frontend/architecture.html#регулярныи-рефакторинг","49":"/frontend/architecture.html#используите-css3","50":"/frontend/architecture.html#используите-современные-стандарты-и-возможности-языков","51":"/frontend/architecture.html#документируите-проект","52":"/frontend/css-ui-libs.html#css-и-ui-библиотеки","53":"/frontend/learning.html#изучение-vue","54":"/frontend/spa-pwa-ssr-ssg.html#spa-pwa-ssg-ssr-и-seo","55":"/misc/CHANGELOG.html#история-изменении","56":"/misc/CHANGELOG.html#v1-3-10-10-2023","57":"/misc/CHANGELOG.html#изменено","58":"/misc/CHANGELOG.html#v1-2-27-09-2023","59":"/misc/CHANGELOG.html#новое","60":"/misc/CHANGELOG.html#изменено-1","61":"/misc/CHANGELOG.html#v1-1-15-09-2023","62":"/misc/CHANGELOG.html#новое-1","63":"/misc/CHANGELOG.html#изменено-2","64":"/misc/CHANGELOG.html#v1-0-11-09-2023","65":"/misc/CHANGELOG.html#новое-2","66":"/misc/cheat-sheets.html#шпаргалки-cheat-sheet","67":"/misc/cheat-sheets.html#vue","68":"/misc/cheat-sheets.html#javascript","69":"/misc/cheat-sheets.html#html","70":"/misc/cheat-sheets.html#css","71":"/misc/cheat-sheets.html#typescript","72":"/misc/cheat-sheets.html#markdown","73":"/misc/contribute.html#внесите-лепту-в-развитие-данного-faq","74":"/misc/glossary.html#глоссарии-и-сокращения","75":"/misc/introduction.html#предисловие"},"fieldIds":{"title":0,"titles":1,"text":2},"fieldLength":{"0":[5,1,1],"1":[2,5,123],"2":[3,1,380],"3":[6,1,258],"4":[1,1,230],"5":[6,1,144],"6":[3,1,278],"7":[2,3,478],"8":[5,3,260],"9":[5,7,231],"10":[3,3,287],"11":[8,3,541],"12":[6,3,48],"13":[5,7,60],"14":[2,7,67],"15":[4,7,97],"16":[4,7,95],"17":[2,7,92],"18":[5,7,135],"19":[2,3,264],"20":[6,3,46],"21":[3,9,18],"22":[1,9,44],"23":[4,9,17],"24":[6,9,9],"25":[3,9,119],"26":[2,3,49],"27":[3,3,68],"28":[2,1,1],"29":[8,2,168],"30":[4,1,1],"31":[2,1,64],"32":[1,1,1],"33":[2,1,450],"34":[1,1,137],"35":[2,1,203],"36":[1,3,69],"37":[2,3,107],"38":[4,1,219],"39":[2,1,861],"40":[3,1,42],"41":[2,1,262],"42":[5,1,525],"43":[1,1,162],"44":[3,1,414],"45":[3,1,273],"46":[2,4,78],"47":[9,4,41],"48":[2,4,29],"49":[2,4,47],"50":[6,4,18],"51":[2,4,30],"52":[4,1,223],"53":[2,1,431],"54":[6,1,532],"55":[2,1,1],"56":[5,2,1],"57":[1,7,9],"58":[6,2,1],"59":[1,8,6],"60":[1,8,24],"61":[6,2,1],"62":[1,8,3],"63":[1,8,4],"64":[6,2,1],"65":[1,8,3],"66":[4,1,1],"67":[1,4,5],"68":[1,4,4],"69":[1,4,4],"70":[1,4,6],"71":[1,4,8],"72":[1,4,2],"73":[6,1,37],"74":[3,1,66],"75":[1,1,73]},"averageFieldLength":[3.1710526315789473,3.5,132.72368421052633],"storedFields":{"0":{"title":"Абстракция канала связи с бэкендом","titles":[]},"1":{"title":"API сервис","titles":["Абстракция канала связи с бэкендом"]},"2":{"title":"Аутентификация и авторизация","titles":[]},"3":{"title":"Варианты задействовать свой бэкенд для фронтендера","titles":[]},"4":{"title":"CORS","titles":[]},"5":{"title":"Протоколы. To REST или не REST?","titles":[]},"6":{"title":"Фреймворк Vue 3","titles":[]},"7":{"title":"Прогрессивный фреймворк","titles":["Фреймворк Vue 3"]},"8":{"title":"Использование Vue в веб-приложении","titles":["Фреймворк Vue 3"]},"9":{"title":"Путь сборщика, лучший путь...","titles":["Фреймворк Vue 3","Использование Vue в веб-приложении"]},"10":{"title":"Понимание однофайловых компонентов","titles":["Фреймворк Vue 3"]},"11":{"title":"Разные варианты - options, composition, и script setup API","titles":["Фреймворк Vue 3"]},"12":{"title":"Изучение встроенных директив в Vue 3","titles":["Фреймворк Vue 3"]},"13":{"title":"v-bind: (сокращение ":")","titles":["Фреймворк Vue 3","Изучение встроенных директив в Vue 3"]},"14":{"title":"v-show","titles":["Фреймворк Vue 3","Изучение встроенных директив в Vue 3"]},"15":{"title":"v-if, v-else и v-else-if","titles":["Фреймворк Vue 3","Изучение встроенных директив в Vue 3"]},"16":{"title":"v-for и :key","titles":["Фреймворк Vue 3","Изучение встроенных директив в Vue 3"]},"17":{"title":"v-model","titles":["Фреймворк Vue 3","Изучение встроенных директив в Vue 3"]},"18":{"title":"v-on: (и сокращение @)","titles":["Фреймворк Vue 3","Изучение встроенных директив в Vue 3"]},"19":{"title":"Встроенные компоненты","titles":["Фреймворк Vue 3"]},"20":{"title":"Кодовые соглашения (code conventions) в книге","titles":["Фреймворк Vue 3"]},"21":{"title":"Переменные и пропсы","titles":["Фреймворк Vue 3","Кодовые соглашения (code conventions) в книге"]},"22":{"title":"Константы","titles":["Фреймворк Vue 3","Кодовые соглашения (code conventions) в книге"]},"23":{"title":"Имена классов и компонентов","titles":["Фреймворк Vue 3","Кодовые соглашения (code conventions) в книге"]},"24":{"title":"Функции, методы, события и имена файлов","titles":["Фреймворк Vue 3","Кодовые соглашения (code conventions) в книге"]},"25":{"title":""Экземпляры","titles":["Фреймворк Vue 3","Кодовые соглашения (code conventions) в книге"]},"26":{"title":"Подведение итогов","titles":["Фреймворк Vue 3"]},"27":{"title":"Вопросы для проверки","titles":["Фреймворк Vue 3"]},"28":{"title":"О книге","titles":[]},"29":{"title":"Vue.js 3 Design Patterns and Best Practices","titles":["О книге"]},"30":{"title":"Глава еще не переведена","titles":[null]},"31":{"title":"CI/CD","titles":[]},"32":{"title":"Docker","titles":[]},"33":{"title":"Github Actions","titles":[]},"34":{"title":"Хостинг","titles":[]},"35":{"title":"Ресурсы приложения","titles":[]},"36":{"title":"BaseIcon","titles":["Ресурсы приложения",null,null]},"37":{"title":"icons.js","titles":["Ресурсы приложения",null,null]},"38":{"title":"Создание и сборка приложения","titles":[]},"39":{"title":"Настройка IDE","titles":[]},"40":{"title":"Подскажите удобную библиотеку","titles":[]},"41":{"title":"Полезные советы","titles":[]},"42":{"title":"State management во Vue 3","titles":[]},"43":{"title":"Тестирование","titles":[]},"44":{"title":"О фронтенд фреймворках","titles":[]},"45":{"title":"Архитектура фронтэнд приложений","titles":[]},"46":{"title":"Избегайте зависимостей","titles":["Архитектура фронтэнд приложений",null,null,null,null]},"47":{"title":"Используйте обертки над компонентами UI библиотек и сторонних утилит","titles":["Архитектура фронтэнд приложений",null,null,null,null]},"48":{"title":"Регулярный рефакторинг","titles":["Архитектура фронтэнд приложений",null,null,null,null]},"49":{"title":"Используйте CSS3","titles":["Архитектура фронтэнд приложений",null,null,null,null]},"50":{"title":"Используйте современные стандарты и возможности языков","titles":["Архитектура фронтэнд приложений",null,null,null,null]},"51":{"title":"Документируйте проект","titles":["Архитектура фронтэнд приложений",null,null,null,null]},"52":{"title":"CSS и UI библиотеки","titles":[]},"53":{"title":"Изучение Vue","titles":[]},"54":{"title":"SPA, PWA, SSG, SSR и SEO","titles":[]},"55":{"title":"История изменений","titles":[]},"56":{"title":"v1.3 (10-10-2023)","titles":["История изменений"]},"57":{"title":"Изменено","titles":["История изменений","v1.3 (10-10-2023)",null]},"58":{"title":"v1.2 (27-09-2023)","titles":["История изменений"]},"59":{"title":"Новое","titles":["История изменений","v1.2 (27-09-2023)",null]},"60":{"title":"Изменено","titles":["История изменений","v1.2 (27-09-2023)",null]},"61":{"title":"v1.1 (15-09-2023)","titles":["История изменений"]},"62":{"title":"Новое","titles":["История изменений","v1.1 (15-09-2023)"]},"63":{"title":"Изменено","titles":["История изменений","v1.1 (15-09-2023)"]},"64":{"title":"v1.0 (11-09-2023)","titles":["История изменений"]},"65":{"title":"Новое","titles":["История изменений","v1.0 (11-09-2023)"]},"66":{"title":"Шпаргалки (Cheat Sheet)","titles":[]},"67":{"title":"Vue","titles":["Шпаргалки (Cheat Sheet)",null]},"68":{"title":"JavaScript","titles":["Шпаргалки (Cheat Sheet)",null]},"69":{"title":"HTML","titles":["Шпаргалки (Cheat Sheet)",null]},"70":{"title":"CSS","titles":["Шпаргалки (Cheat Sheet)",null]},"71":{"title":"Typescript","titles":["Шпаргалки (Cheat Sheet)",null]},"72":{"title":"Markdown","titles":["Шпаргалки (Cheat Sheet)",null]},"73":{"title":"Внесите лепту в развитие данного FAQ","titles":[]},"74":{"title":"Глоссарий и сокращения","titles":[]},"75":{"title":"Предисловие","titles":[]}},"dirtCount":0,"index":[[">",{"2":{"73":2}}],["qbutton",{"2":{"52":2}}],["questions",{"2":{"75":1}}],["query",{"2":{"50":1}}],["queuebuilder",{"2":{"23":1}}],["quasar",{"2":{"39":4,"40":1}}],["quiet",{"2":{"39":2}}],["quicktime",{"2":{"6":1}}],["quot",{"0":{"13":2,"25":1},"2":{"1":40,"2":2,"3":4,"7":6,"8":22,"9":2,"10":4,"11":32,"13":4,"14":4,"16":8,"17":8,"18":8,"19":28,"27":2,"33":92,"35":28,"36":60,"37":32,"38":48,"39":1298,"41":4,"42":8,"44":4,"45":4,"49":2,"53":3,"54":6}}],["ютюбе",{"2":{"53":1}}],["ютюба",{"2":{"53":1}}],["ю",{"2":{"44":1}}],["юзер",{"2":{"2":1}}],["karma",{"2":{"39":20}}],["keepalive",{"2":{"19":2}}],["keys",{"2":{"42":1}}],["key=",{"2":{"16":2}}],["key",{"0":{"16":1},"2":{"16":1,"19":1,"33":17}}],["^",{"2":{"39":2}}],["^20",{"2":{"38":2}}],["zero",{"2":{"39":2}}],["`~",{"2":{"39":2}}],["`$",{"2":{"36":8}}],["`",{"2":{"33":6,"35":2}}],["|",{"2":{"33":8,"39":2}}],["yarnrc",{"2":{"39":4}}],["yarn",{"2":{"38":1,"39":8}}],["yamllint",{"2":{"39":4}}],["yaml",{"2":{"33":10,"39":14}}],["y",{"2":{"33":2}}],["yourself",{"2":{"39":2}}],["your",{"2":{"33":23,"42":2}}],["🚀",{"2":{"33":2}}],["🛎️",{"2":{"33":2}}],["09",{"0":{"58":1,"61":1,"64":1},"1":{"59":1,"60":1,"62":1,"63":1,"65":1}}],["04",{"2":{"39":2}}],["0",{"0":{"64":1},"1":{"65":1},"2":{"33":10,"54":2}}],["8",{"2":{"29":1,"33":4}}],["6",{"2":{"29":1}}],["$dirs",{"2":{"33":2}}],["$root",{"2":{"33":6}}],["$router",{"2":{"22":1}}],["$backup",{"2":{"33":12}}],["$env",{"2":{"33":2}}],["$project",{"2":{"33":6}}],["$github",{"2":{"33":10}}],["$target",{"2":{"33":16}}],["$store=usestore",{"2":{"22":1}}],["$notifications",{"2":{"22":1}}],["$modals",{"2":{"22":1}}],["$",{"2":{"22":1,"33":30,"35":2,"39":192}}],["50кб",{"2":{"41":1}}],["58",{"2":{"39":2}}],["5",{"2":{"16":3,"29":1,"33":5}}],["цитата",{"2":{"52":1}}],["цикл",{"2":{"16":1}}],["циклу",{"2":{"16":1}}],["цикла",{"2":{"11":1,"16":1}}],["цукерберг",{"2":{"44":1}}],["цепочке",{"2":{"8":1}}],["целесообразно",{"2":{"45":1}}],["целесообразность",{"2":{"43":1}}],["целей",{"2":{"6":1}}],["целом",{"2":{"39":1,"52":1,"53":1,"54":2}}],["целое",{"2":{"9":1}}],["цели",{"2":{"33":1,"42":1}}],["цель",{"2":{"8":1}}],["центр",{"2":{"2":1}}],["70",{"2":{"53":2}}],["7",{"2":{"11":1,"29":1}}],["4",{"2":{"10":2,"16":1,"17":1,"29":1,"37":4,"39":2}}],["401",{"2":{"2":2}}],["+page",{"2":{"39":12}}],["+layout",{"2":{"39":14}}],["+$backups",{"2":{"33":2}}],["+",{"2":{"7":2,"33":2,"37":4}}],["щепоткой",{"2":{"7":1}}],["9",{"2":{"29":1}}],["99",{"2":{"5":1,"42":3}}],["95",{"2":{"2":1,"40":1}}],["шпаргалки",{"0":{"66":1},"1":{"67":1,"68":1,"69":1,"70":1,"71":1,"72":1}}],["штатном",{"2":{"39":1}}],["штука",{"2":{"5":1}}],["шаг",{"2":{"54":1}}],["шагах",{"2":{"29":1}}],["шаблону",{"2":{"42":1}}],["шаблон",{"2":{"11":1,"42":1,"44":2,"45":1,"52":1}}],["шаблоне",{"2":{"11":5,"35":1}}],["шаблонам",{"2":{"54":1}}],["шаблона",{"2":{"11":1}}],["шаблоны",{"2":{"6":1,"19":1}}],["широкий",{"2":{"29":1}}],["шина",{"2":{"5":1}}],["300",{"2":{"39":2}}],["30",{"2":{"39":2}}],["39",{"2":{"19":4,"33":12,"35":4,"39":22}}],["3",{"0":{"6":1,"12":1,"29":1,"42":1,"56":1},"1":{"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":2,"14":2,"15":2,"16":2,"17":2,"18":2,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"57":1},"2":{"4":2,"6":3,"7":1,"8":3,"9":3,"10":2,"11":4,"16":1,"18":1,"19":2,"20":1,"26":1,"29":2,"38":2,"39":2,"41":3,"42":9,"44":3,"45":2,"52":1,"53":4,"67":1,"75":1}}],["27",{"0":{"58":1},"1":{"59":1,"60":1}}],["22+",{"2":{"39":1}}],["29",{"2":{"39":2}}],["24",{"2":{"36":4}}],["26",{"2":{"35":2}}],["2022",{"2":{"75":1}}],["2023",{"0":{"56":1,"58":1,"61":1,"64":1},"1":{"57":1,"59":1,"60":1,"62":1,"63":1,"65":1},"2":{"39":2,"53":1,"75":1}}],["2016",{"2":{"53":1}}],["20~30",{"2":{"38":1}}],["200",{"2":{"34":1,"39":2,"54":1}}],["20",{"2":{"33":2,"42":1,"53":1}}],["2",{"0":{"58":1},"1":{"59":1,"60":1},"2":{"4":2,"5":1,"6":1,"11":4,"16":1,"29":1,"39":6,"41":7,"42":2,"44":1,"52":1,"53":3,"54":1,"70":2}}],["way",{"2":{"73":1}}],["watch",{"2":{"44":1}}],["watchman",{"2":{"39":4}}],["windi",{"2":{"39":20}}],["window",{"2":{"33":2,"39":8}}],["width",{"2":{"36":14}}],["wide",{"2":{"6":1}}],["with",{"2":{"33":16,"37":2,"39":2}}],["words",{"2":{"42":1}}],["wordseparators",{"2":{"39":2}}],["workbox",{"2":{"54":2}}],["workbench",{"2":{"39":22}}],["worker",{"2":{"54":3,"74":1}}],["workers",{"2":{"29":1}}],["workspace",{"2":{"39":6}}],["workingissueformatscm",{"2":{"39":2}}],["work",{"2":{"33":2,"39":4}}],["workflow",{"2":{"33":3}}],["workflows",{"2":{"33":5}}],["world",{"2":{"6":1,"8":2,"10":2,"11":7}}],["write",{"2":{"10":2,"33":2,"42":1}}],["we",{"2":{"10":2}}],["webdriverio",{"2":{"43":1}}],["webpack",{"2":{"38":4,"39":26}}],["webp",{"2":{"37":1}}],["webstorm",{"2":{"39":2}}],["website",{"2":{"33":2,"34":5}}],["websocket",{"2":{"5":1}}],["websockets",{"2":{"1":1,"5":3,"53":1}}],["web",{"2":{"6":1,"29":1,"54":4}}],["www",{"2":{"4":1,"29":1,"33":12}}],["huskyrc",{"2":{"39":4}}],["hxx",{"2":{"39":6}}],["hpp",{"2":{"39":6}}],["histoire",{"2":{"39":20}}],["history",{"2":{"39":10}}],["highlightmodifiedtabs",{"2":{"39":2}}],["hmr",{"2":{"38":1}}],["h",{"2":{"33":2,"39":8}}],["holding",{"2":{"42":2}}],["houdini",{"2":{"39":2}}],["hover",{"2":{"39":2}}],["hooks",{"2":{"11":1,"39":8}}],["hosts",{"2":{"42":1}}],["host",{"2":{"4":2,"33":14}}],["h1",{"2":{"10":6}}],["heidisql",{"2":{"39":1}}],["height",{"2":{"36":14}}],["heex",{"2":{"39":2}}],["hexcolorlength",{"2":{"39":2}}],["helps",{"2":{"37":2}}],["hello=",{"2":{"11":1}}],["hello",{"2":{"8":2,"10":2,"11":19}}],["heroku",{"2":{"34":1}}],["here",{"2":{"10":2}}],["header",{"2":{"50":1}}],["headless",{"2":{"43":1,"52":1}}],["head",{"2":{"8":5}}],["htmlnanorc",{"2":{"39":40}}],["html=",{"2":{"36":2}}],["html5",{"2":{"6":1,"50":1,"69":1}}],["html",{"0":{"69":1},"2":{"4":1,"6":5,"7":2,"8":7,"9":2,"10":7,"11":1,"12":2,"13":4,"17":2,"18":4,"19":4,"33":2,"34":1,"35":2,"39":11,"44":3,"53":1,"54":10}}],["https",{"2":{"4":10,"8":2,"18":1,"19":2,"34":1,"39":4,"54":1}}],["httponly",{"2":{"2":3}}],["http",{"2":{"1":21,"3":1,"4":4,"35":1}}],["12",{"2":{"53":1}}],["15",{"0":{"61":1},"1":{"62":1,"63":1},"2":{"46":1}}],["16гб",{"2":{"39":1}}],["11",{"0":{"64":1},"1":{"65":1},"2":{"29":1}}],["1000",{"2":{"42":1}}],["100",{"2":{"36":4,"54":1}}],["10",{"0":{"56":2},"1":{"57":2},"2":{"29":1,"39":2,"52":1,"53":2}}],["1",{"0":{"61":1},"1":{"62":1,"63":1},"2":{"4":11,"5":1,"9":2,"16":1,"29":1,"37":4,"38":2,"41":4,"42":1,"54":1}}],["хранятся",{"2":{"53":1}}],["хранит",{"2":{"41":1}}],["хранить",{"2":{"2":1,"33":1,"42":1}}],["хедером",{"2":{"45":1}}],["хватает",{"2":{"40":1}}],["хэш",{"2":{"35":1}}],["хочу",{"2":{"45":2,"53":1}}],["хочет",{"2":{"3":2}}],["хотя",{"2":{"53":1}}],["хоть",{"2":{"44":2}}],["хотите",{"2":{"7":1,"10":2,"41":1}}],["хостите",{"2":{"34":1}}],["хостинг",{"0":{"34":1},"2":{"34":1}}],["хост",{"2":{"33":2}}],["хостеры",{"2":{"34":1}}],["хосте",{"2":{"33":1}}],["хорош",{"2":{"46":1}}],["хорошее",{"2":{"29":1}}],["хорошей",{"2":{"20":1}}],["хорошие",{"2":{"44":1,"52":2}}],["хороших",{"2":{"29":1}}],["хороший",{"2":{"7":1,"39":1}}],["хорошая",{"2":{"10":1,"43":1,"45":2}}],["хорошо",{"2":{"6":1,"11":1,"39":1,"52":1}}],["я",{"2":{"8":1,"11":2,"19":1,"29":1,"45":2,"53":2}}],["языков",{"0":{"50":1},"2":{"7":1,"41":1,"45":1}}],["язык",{"2":{"5":1,"6":2,"25":1,"42":1,"53":1}}],["языках",{"2":{"44":1,"45":1}}],["языками",{"2":{"10":1}}],["языка",{"2":{"4":1,"41":1,"53":1}}],["языке",{"2":{"3":2,"11":1,"53":1}}],["явно",{"2":{"11":1,"19":1}}],["явном",{"2":{"10":1}}],["явным",{"2":{"1":1}}],["является",{"2":{"3":1,"7":1,"8":1,"10":3,"11":4,"13":1,"27":1,"42":1,"44":2,"45":1,"54":1}}],["являются",{"2":{"3":1,"20":1,"25":1,"41":1}}],["like",{"2":{"42":2}}],["license",{"2":{"39":2}}],["lighthouserc",{"2":{"39":40}}],["linux",{"2":{"39":1}}],["lintstagedrc",{"2":{"39":4}}],["lint",{"2":{"39":8}}],["line",{"2":{"39":2}}],["linenumbers",{"2":{"39":2}}],["limit",{"2":{"39":6}}],["lib",{"2":{"39":2}}],["list",{"2":{"38":2,"39":2}}],["life",{"2":{"11":1}}],["learn",{"2":{"53":1}}],["lerna",{"2":{"39":4}}],["leex",{"2":{"39":2}}],["less",{"2":{"39":2}}],["length",{"2":{"37":4}}],["let",{"2":{"37":2}}],["layouts",{"2":{"45":1}}],["last",{"2":{"39":2}}],["lastindexof",{"2":{"37":4}}],["latexmk",{"2":{"39":2}}],["latest",{"2":{"33":4}}],["language",{"2":{"22":1,"39":2}}],["lang=",{"2":{"10":1,"36":2}}],["lamda",{"2":{"3":1}}],["lambda",{"2":{"3":1}}],["lt",{"2":{"8":24,"10":16,"11":16,"13":2,"14":4,"16":4,"17":2,"18":8,"19":16,"35":8,"36":16,"39":3,"52":8}}],["lot",{"2":{"39":2}}],["lof",{"2":{"39":2}}],["lock",{"2":{"39":26}}],["location",{"2":{"33":2}}],["localstoragename",{"2":{"33":6}}],["localstorage",{"2":{"2":1,"33":5}}],["loadicons",{"2":{"37":4}}],["loading",{"2":{"1":4,"14":4}}],["logic",{"2":{"42":2}}],["login",{"2":{"42":1}}],["logs",{"2":{"33":2,"39":2}}],["log",{"2":{"33":2,"39":2}}],["logout",{"2":{"1":2,"42":1}}],["certification",{"2":{"53":1}}],["certbot",{"2":{"34":1}}],["czrc",{"2":{"39":4}}],["cz",{"2":{"39":4}}],["cypress",{"2":{"39":20,"43":1}}],["cycle",{"2":{"11":1}}],["cmakepresets",{"2":{"39":2}}],["cmake",{"2":{"39":6}}],["cmakelists",{"2":{"39":2}}],["cxx",{"2":{"39":2}}],["cjs",{"2":{"39":8}}],["cc",{"2":{"39":2}}],["csproj",{"2":{"39":2}}],["cspell",{"2":{"39":4}}],["cshtml",{"2":{"39":4}}],["cs",{"2":{"39":24}}],["css3",{"0":{"49":1},"2":{"49":1,"50":1,"52":1}}],["cssnano",{"2":{"39":20}}],["cssnanorc",{"2":{"39":20}}],["css",{"0":{"52":1,"70":1},"2":{"6":4,"8":1,"9":1,"10":4,"14":1,"19":1,"34":1,"39":10,"40":1,"44":1,"49":1,"52":9,"53":1,"54":1}}],["custom",{"2":{"39":4}}],["cursorstyle",{"2":{"39":2}}],["cursorsmoothcaretanimation",{"2":{"39":2}}],["cursorblinking",{"2":{"39":2}}],["currentcolor",{"2":{"36":4}}],["ctrlcmd",{"2":{"39":2}}],["cpp",{"2":{"39":2}}],["cp",{"2":{"33":2}}],["cheat",{"0":{"66":1},"1":{"67":1,"68":1,"69":1,"70":1,"71":1,"72":1},"2":{"67":1,"68":1,"69":1,"70":4}}],["check",{"2":{"39":2}}],["checkout",{"2":{"33":7}}],["chrome",{"2":{"54":1}}],["changelog",{"2":{"39":2}}],["chgrp",{"2":{"33":4}}],["choice",{"2":{"33":2}}],["cd",{"0":{"31":1},"2":{"31":5,"33":7,"43":1,"53":1,"60":1}}],["cdn",{"2":{"8":1}}],["citation",{"2":{"39":2}}],["circleci",{"2":{"39":4}}],["ci",{"0":{"31":1},"2":{"31":5,"33":1,"43":1,"53":1,"60":1}}],["c",{"2":{"7":3,"11":1,"39":2}}],["can",{"2":{"42":1}}],["cache",{"2":{"39":2}}],["cargo",{"2":{"39":4}}],["capture",{"2":{"39":190}}],["camelcase",{"2":{"24":1}}],["case",{"2":{"22":1,"51":1}}],["ca",{"2":{"7":1}}],["clangd",{"2":{"39":2}}],["clang",{"2":{"39":4}}],["classes",{"2":{"71":1}}],["classpath",{"2":{"39":2}}],["class",{"2":{"39":2}}],["class=",{"2":{"36":2}}],["closeonfiledelete",{"2":{"39":2}}],["cloud",{"2":{"3":2,"53":1}}],["clean",{"2":{"33":2}}],["clippy",{"2":{"39":4}}],["clipboard",{"2":{"39":8}}],["cli",{"2":{"38":1,"39":4}}],["click=",{"2":{"18":4,"19":2}}],["click",{"2":{"18":2}}],["client",{"2":{"4":11}}],["crowdin",{"2":{"39":4}}],["cross",{"2":{"4":1,"39":2}}],["credits",{"2":{"39":2}}],["credo",{"2":{"39":2}}],["create",{"2":{"38":2,"73":1}}],["createapp",{"2":{"8":6}}],["crud",{"2":{"3":1}}],["copying",{"2":{"39":2}}],["count`",{"2":{"33":2}}],["count=5",{"2":{"33":2}}],["count",{"2":{"21":1}}],["codesandbox",{"2":{"39":1}}],["codeowners",{"2":{"39":2}}],["codecov",{"2":{"39":20}}],["codelens",{"2":{"39":8}}],["codeaction",{"2":{"39":2}}],["codeactions",{"2":{"39":2}}],["codeactionsonsave",{"2":{"39":4}}],["codeium",{"2":{"39":1}}],["code",{"0":{"20":1},"1":{"21":1,"22":1,"23":1,"24":1,"25":1},"2":{"11":1,"22":1,"39":11,"44":1}}],["colortheme",{"2":{"39":2}}],["color",{"2":{"10":2,"36":6}}],["cors",{"0":{"4":1},"2":{"4":10,"57":1}}],["commands",{"2":{"39":2}}],["commitlint",{"2":{"39":8}}],["commit",{"2":{"31":1}}],["compile",{"2":{"39":2}}],["compileroptions",{"2":{"38":2}}],["completion",{"2":{"39":2}}],["compare",{"2":{"39":12}}],["computed",{"2":{"11":1,"36":6}}],["component",{"2":{"19":5,"39":14,"42":3}}],["components",{"2":{"11":1,"19":1,"38":2,"39":2,"45":1}}],["composable",{"2":{"42":9,"44":2}}],["composables",{"2":{"1":2,"11":1,"42":1,"45":1}}],["compose",{"2":{"39":2}}],["composer",{"2":{"39":4}}],["composition",{"0":{"11":1},"2":{"11":10,"41":3,"53":1,"60":1}}],["comaccess",{"2":{"4":2}}],["comget",{"2":{"4":1}}],["com",{"2":{"3":1,"4":12,"8":2,"29":1,"33":17,"34":5,"39":4}}],["connection",{"2":{"39":1}}],["conduct",{"2":{"39":2}}],["conf",{"2":{"39":2}}],["confirmsync",{"2":{"39":2}}],["confirmdraganddrop",{"2":{"39":2}}],["confirmdelete",{"2":{"39":2}}],["configs",{"2":{"39":2}}],["config",{"2":{"38":3,"39":449}}],["console",{"2":{"33":2}}],["constant",{"2":{"11":2}}],["const",{"2":{"1":6,"8":2,"11":4,"19":2,"22":1,"25":1,"33":1,"36":6,"37":11,"41":3,"42":2}}],["container",{"2":{"50":1}}],["contributors",{"2":{"39":2}}],["contributing",{"2":{"39":2}}],["controller",{"2":{"39":2,"42":3,"44":2}}],["control",{"2":{"2":1,"4":7,"71":1}}],["contentlayer",{"2":{"39":20}}],["contents",{"2":{"33":2}}],["continuous",{"2":{"31":2}}],["conventions",{"0":{"20":1},"1":{"21":1,"22":1,"23":1,"24":1,"25":1}}],["convention",{"2":{"11":1}}],["cookie",{"2":{"2":3}}],["mjs",{"2":{"39":8}}],["multicursormodifier",{"2":{"39":2}}],["m",{"2":{"33":4}}],["mdsvex",{"2":{"39":2}}],["md",{"2":{"33":2,"39":6}}],["mkdir",{"2":{"33":4}}],["mvp",{"2":{"43":1}}],["mvc",{"2":{"42":1,"44":1}}],["mv",{"2":{"33":2}}],["moment",{"2":{"40":1}}],["mocha",{"2":{"39":20}}],["monospace",{"2":{"39":2}}],["mono",{"2":{"39":2}}],["mod",{"2":{"39":2}}],["module",{"2":{"39":2}}],["modules",{"2":{"37":12,"38":1,"39":4}}],["mode",{"2":{"39":2}}],["modern",{"2":{"39":2}}],["model=",{"2":{"17":2}}],["model",{"0":{"17":1},"2":{"14":1,"25":1,"42":1,"44":1}}],["mount",{"2":{"8":4}}],["mysql",{"2":{"39":1,"53":1}}],["my",{"2":{"13":4}}],["mymethod",{"2":{"11":1}}],["management",{"0":{"42":1},"2":{"42":2}}],["manually",{"2":{"39":2}}],["mailmap",{"2":{"39":2}}],["maintainers",{"2":{"39":2}}],["main",{"2":{"9":1,"33":9}}],["markdownlint",{"2":{"39":4}}],["markdown",{"0":{"72":1},"2":{"39":2,"72":1}}],["macos",{"2":{"39":2}}],["macromedia",{"2":{"6":1}}],["map",{"2":{"37":4,"39":14}}],["mastery",{"2":{"53":1}}],["master",{"2":{"33":5,"39":2}}],["menus",{"2":{"39":2}}],["methods",{"2":{"11":1}}],["metadata",{"2":{"39":2}}],["meta",{"2":{"1":2,"36":1,"37":4}}],["message",{"2":{"8":6}}],["mix",{"2":{"39":6}}],["might",{"2":{"39":2}}],["minheight",{"2":{"36":2}}],["minwidth",{"2":{"36":2}}],["mitt",{"2":{"5":1}}],["microsoft",{"2":{"3":1,"34":1,"39":1}}],["зерна",{"2":{"53":1}}],["зря",{"2":{"52":1}}],["зрения",{"2":{"29":1,"42":3,"74":1}}],["змеином",{"2":{"22":1}}],["звучит",{"2":{"9":1}}],["зона",{"2":{"7":1}}],["здесь",{"2":{"5":1,"6":1,"9":1,"10":2,"11":2,"18":1,"19":2,"42":1}}],["знаний",{"2":{"53":1}}],["знанию",{"2":{"53":1}}],["знания",{"2":{"6":1,"53":2}}],["знал",{"2":{"53":1}}],["знающих",{"2":{"53":1}}],["знают",{"2":{"52":1}}],["знатоков",{"2":{"39":1}}],["знать",{"2":{"7":1,"9":1,"11":1,"38":1,"53":2}}],["знаем",{"2":{"11":1}}],["знает",{"2":{"9":1,"11":2}}],["знаете",{"2":{"3":1}}],["знака",{"2":{"22":1}}],["знаком",{"2":{"21":1}}],["знакомым",{"2":{"10":1}}],["знак",{"2":{"8":1}}],["значению",{"2":{"11":2}}],["значений",{"2":{"11":1}}],["значением",{"2":{"13":1,"44":1}}],["значение",{"2":{"7":4,"8":1,"11":7,"13":2,"14":2,"16":1,"17":2,"19":1,"33":1}}],["значения",{"2":{"7":1,"8":1,"11":1,"13":1,"15":1,"17":1,"19":1,"22":1,"44":1}}],["значении",{"2":{"3":1}}],["значительный",{"2":{"7":1,"54":1}}],["значительные",{"2":{"6":1}}],["значительную",{"2":{"7":1}}],["значительное",{"2":{"41":1}}],["значительно",{"2":{"7":1,"8":1,"39":1,"45":1,"52":1,"54":1}}],["значительной",{"2":{"6":1}}],["зазываниях",{"2":{"46":1}}],["затрагиваемым",{"2":{"75":1}}],["затратами",{"2":{"45":1}}],["затем",{"2":{"2":1,"3":1,"9":2,"37":1,"54":3}}],["зажимает",{"2":{"44":1}}],["зависящие",{"2":{"44":1}}],["зависимое",{"2":{"7":1}}],["зависимость",{"2":{"42":1,"46":1,"52":2}}],["зависимостей",{"0":{"46":1},"2":{"7":1,"22":1,"41":1,"44":2}}],["зависимости",{"2":{"2":1,"7":2,"10":1,"11":1,"15":1,"35":1,"54":1}}],["зависит",{"2":{"4":1,"7":1,"8":1}}],["занять",{"2":{"43":1}}],["занимающие",{"2":{"41":1}}],["занимаются",{"2":{"43":1}}],["занимают",{"2":{"38":1}}],["занимает",{"2":{"6":1}}],["зачастую",{"2":{"43":1}}],["зачем",{"2":{"42":1}}],["забыл",{"2":{"49":1}}],["забыть",{"2":{"41":1}}],["заботу",{"2":{"44":1}}],["заботитесь",{"2":{"37":1}}],["загуглите",{"2":{"46":1}}],["заглянуть",{"2":{"39":1}}],["заглавными",{"2":{"22":1,"25":1}}],["загромождает",{"2":{"11":1}}],["загружаясь",{"2":{"35":1}}],["загружать",{"2":{"9":1,"19":1}}],["загрузке",{"2":{"33":1,"39":1,"54":1}}],["загрузки",{"2":{"33":2,"35":1,"41":1}}],["загрузка",{"2":{"33":1}}],["загрузит",{"2":{"9":2}}],["заголовков",{"2":{"4":1}}],["захостите",{"2":{"53":1}}],["захостить",{"2":{"3":1,"34":1}}],["захотеть",{"2":{"7":1}}],["закэшировать",{"2":{"54":1}}],["заказчик",{"2":{"45":1,"49":1}}],["заканчивая",{"2":{"10":1,"29":1}}],["закрытый",{"2":{"33":1}}],["закрепить",{"2":{"27":1}}],["заключенного",{"2":{"9":1}}],["заключается",{"2":{"7":4,"11":1,"19":1}}],["законченный",{"2":{"53":1}}],["закон",{"2":{"7":1}}],["заранее",{"2":{"54":1}}],["зарегистрируйте",{"2":{"53":1}}],["зарегистрироваться",{"2":{"53":1}}],["зарезервированное",{"2":{"11":1}}],["зарекомендовавшие",{"2":{"6":1}}],["зародились",{"2":{"6":1}}],["защиты",{"2":{"4":1,"29":1}}],["задаваемые",{"2":{"75":1}}],["задачей",{"2":{"44":1}}],["задача",{"2":{"39":1}}],["задает",{"2":{"41":1}}],["заданном",{"2":{"9":1}}],["заданному",{"2":{"3":1}}],["задать",{"2":{"2":1,"44":2}}],["задействовать",{"0":{"3":1},"2":{"54":1}}],["за",{"2":{"2":1,"5":1,"6":1,"7":1,"11":1,"15":1,"19":3,"25":1,"29":2,"39":1,"41":2,"42":4,"44":6,"53":1}}],["заставлять",{"2":{"2":1}}],["заметки",{"2":{"54":1}}],["заметить",{"2":{"11":1}}],["замечательным",{"2":{"8":1}}],["замена",{"2":{"41":1}}],["замены",{"2":{"41":1}}],["замену",{"2":{"41":2,"44":1,"47":1}}],["заменяются",{"2":{"21":1}}],["заменится",{"2":{"19":1}}],["замените",{"2":{"18":1}}],["заменить",{"2":{"1":1,"45":1,"52":2}}],["заменено",{"2":{"8":1}}],["заморачиваться",{"2":{"3":1}}],["заморочки",{"2":{"2":1}}],["заполнено",{"2":{"42":1}}],["запомните",{"2":{"10":1}}],["запущен",{"2":{"43":1}}],["запутывающее",{"2":{"42":1}}],["запуск",{"2":{"65":1}}],["запуске",{"2":{"54":2}}],["запускалось",{"2":{"54":1}}],["запускаются",{"2":{"11":1,"39":1}}],["запускается",{"2":{"38":1}}],["запускает",{"2":{"9":1}}],["запустим",{"2":{"9":1}}],["запустить",{"2":{"3":2,"39":1}}],["запасного",{"2":{"19":1}}],["записываются",{"2":{"23":1}}],["записанный",{"2":{"2":1}}],["записи",{"2":{"2":1,"11":1}}],["запрошен",{"2":{"4":1}}],["запросом",{"2":{"54":1}}],["запросов",{"2":{"1":1,"4":1,"5":2}}],["запросы",{"2":{"5":1,"39":1,"54":2}}],["запрос",{"2":{"4":3}}],["запросе",{"2":{"2":2}}],["запросам",{"2":{"4":1}}],["запроса",{"2":{"1":1,"4":4,"54":1}}],["запрашивает",{"2":{"4":1}}],["запрашиваемого",{"2":{"4":1}}],["запрашиваемому",{"2":{"2":1}}],["запрашивать",{"2":{"3":1}}],["запрашивающий",{"2":{"2":1}}],["запрещены",{"2":{"2":1}}],["залогинился",{"2":{"2":1,"42":1}}],["nls",{"2":{"39":4}}],["nx",{"2":{"39":4}}],["nvmrc",{"2":{"39":4}}],["nix",{"2":{"39":6}}],["nativetabs",{"2":{"39":2}}],["named",{"2":{"37":2}}],["name=",{"2":{"35":2}}],["name",{"2":{"11":3,"17":3,"33":24,"35":4,"36":8,"37":16}}],["null",{"2":{"39":2}}],["nuxt",{"2":{"7":1,"39":4}}],["npx",{"2":{"38":4}}],["npm",{"2":{"38":1,"39":8,"41":1,"46":1}}],["n",{"2":{"33":2,"39":2}}],["nest",{"2":{"39":4}}],["nesting",{"2":{"39":4}}],["next",{"2":{"39":4}}],["never",{"2":{"39":2}}],["netlify",{"2":{"34":1,"39":4}}],["network",{"2":{"3":1}}],["newitem",{"2":{"44":6}}],["new",{"2":{"33":4,"37":4}}],["nginx",{"2":{"3":1,"34":1}}],["nodе",{"2":{"39":1}}],["nodemon",{"2":{"39":8}}],["node",{"2":{"3":2,"33":4,"38":5,"39":11,"53":1,"54":1}}],["not",{"2":{"39":2,"41":2}}],["notificationinterceptor",{"2":{"1":4}}],["nosql",{"2":{"3":1,"42":1}}],["bit",{"2":{"42":1}}],["bind",{"0":{"13":1},"2":{"13":1}}],["bzl",{"2":{"39":2}}],["bbl",{"2":{"39":2}}],["blg",{"2":{"39":2}}],["bloc",{"2":{"39":2}}],["blame",{"2":{"39":6}}],["bound",{"2":{"42":2}}],["boundary",{"2":{"39":2}}],["bower",{"2":{"39":6}}],["body",{"2":{"8":6}}],["be",{"2":{"33":4,"39":2}}],["best",{"0":{"29":1},"2":{"53":1}}],["by",{"2":{"33":2}}],["bracketpairs",{"2":{"39":2}}],["branch",{"2":{"33":2}}],["branches",{"2":{"33":4}}],["browserslist",{"2":{"39":4}}],["browser",{"2":{"2":1,"39":2}}],["builddata",{"2":{"33":8}}],["build",{"2":{"33":19,"38":2,"39":8}}],["built",{"2":{"18":1,"19":2}}],["button",{"2":{"18":8,"19":4,"52":1}}],["bundleconfig",{"2":{"39":4}}],["bundle",{"2":{"9":1,"38":6}}],["bundler",{"2":{"9":1}}],["business",{"2":{"42":2}}],["bus",{"2":{"5":1}}],["b",{"2":{"7":4,"41":4}}],["babel",{"2":{"39":20}}],["babelrc",{"2":{"39":20}}],["bazelproject",{"2":{"39":2}}],["bazelignore",{"2":{"39":2}}],["bazelrc",{"2":{"39":2}}],["bazel",{"2":{"39":6}}],["baseinput",{"2":{"47":1}}],["baseicon",{"0":{"36":1},"2":{"35":3,"38":4}}],["basebutton",{"2":{"45":1,"47":1,"52":3}}],["base",{"2":{"36":2}}],["base64",{"2":{"35":1}}],["based",{"2":{"2":3}}],["banner",{"2":{"35":1}}],["backers",{"2":{"39":2}}],["backend",{"2":{"3":1}}],["backups",{"2":{"33":2}}],["backup",{"2":{"33":15}}],["baas",{"2":{"3":5}}],["эстетики",{"2":{"74":1}}],["эволюция",{"2":{"52":1}}],["эван",{"2":{"44":1}}],["эффективно",{"2":{"45":1}}],["эффективности",{"2":{"41":1}}],["эффективного",{"2":{"16":1}}],["эффективней",{"2":{"41":1,"44":2,"54":1}}],["экран",{"2":{"54":1}}],["экране",{"2":{"19":1}}],["экосистеме",{"2":{"39":1}}],["экономичным",{"2":{"3":1}}],["экспериментировал",{"2":{"44":1}}],["экспериментальной",{"2":{"19":1}}],["экспорт",{"2":{"11":1}}],["экспортируете",{"2":{"42":1}}],["экспортирует",{"2":{"10":1}}],["эквивалентна",{"2":{"14":1}}],["экземпляров",{"2":{"42":1}}],["экземпляры",{"0":{"25":1},"2":{"19":1,"25":1}}],["экземпляру",{"2":{"11":1}}],["экземпляр",{"2":{"8":1}}],["элементом",{"2":{"17":1}}],["элементов",{"2":{"2":1,"6":1,"15":2,"16":2,"19":5,"41":4,"43":1}}],["элементу",{"2":{"17":1}}],["элементарное",{"2":{"53":1}}],["элементарно",{"2":{"35":1}}],["элементами",{"2":{"15":1,"18":1}}],["элемента",{"2":{"10":1,"12":2,"16":2,"44":1,"54":1}}],["элемент",{"2":{"8":4,"14":2,"15":4,"19":1,"74":1}}],["элементы",{"2":{"6":1,"10":1,"19":1,"31":1,"44":1,"50":1,"54":1}}],["эти",{"2":{"9":2,"10":1,"11":2,"15":1,"16":1,"25":1,"26":1,"27":1,"42":2}}],["этим",{"2":{"7":1,"10":1}}],["этих",{"2":{"4":1,"6":1,"7":4,"17":1,"43":1,"53":1,"54":1}}],["этапе",{"2":{"45":1}}],["эта",{"2":{"7":1,"11":1,"14":1,"17":1,"18":1,"39":1}}],["эту",{"2":{"5":1,"11":1,"35":1,"43":1,"53":1}}],["этого",{"2":{"9":1,"10":3,"11":1,"12":1,"15":1,"34":1,"38":1,"41":1,"42":1,"44":1,"45":1,"53":2,"54":2}}],["этому",{"2":{"53":1}}],["этом",{"2":{"7":2,"8":2,"9":1,"11":2,"17":1,"19":1,"34":1,"35":1,"38":1,"42":2,"43":2,"44":3,"53":1}}],["этой",{"2":{"2":1,"6":4,"7":1,"11":3,"18":2,"19":1,"20":2,"26":1,"27":1,"29":2,"33":1,"40":1,"41":1,"42":1,"52":1}}],["этот",{"2":{"2":1,"7":2,"8":2,"9":1,"11":3,"14":1,"33":1,"39":1,"45":2,"53":2}}],["это",{"2":{"2":3,"3":3,"4":3,"6":1,"7":9,"8":4,"9":1,"10":7,"11":16,"15":1,"16":1,"17":1,"18":1,"19":4,"25":2,"31":1,"34":1,"35":2,"38":1,"42":8,"43":1,"44":10,"45":6,"46":2,"47":1,"48":1,"49":1,"51":1,"52":1,"53":4,"54":4}}],["эндпойнту",{"2":{"3":2}}],["эндпойнтам",{"2":{"3":1}}],["эндпойнтов",{"2":{"3":1}}],["other",{"2":{"42":1}}],["ok",{"2":{"41":4}}],["observer",{"2":{"41":1}}],["object",{"2":{"14":1,"37":2}}],["overrides",{"2":{"39":2}}],["openclose",{"2":{"39":2}}],["option",{"2":{"22":1}}],["options",{"0":{"11":1},"2":{"11":6,"33":2,"39":2,"41":1}}],["out",{"2":{"39":4}}],["output",{"2":{"39":2}}],["our",{"2":{"10":2}}],["off",{"2":{"39":2,"42":1}}],["of",{"2":{"35":2,"39":2,"54":1}}],["oreilly",{"2":{"53":1}}],["organizeimports",{"2":{"39":2}}],["org",{"2":{"18":1,"19":2}}],["origin",{"2":{"4":11}}],["oracle",{"2":{"3":1,"34":1}}],["one",{"2":{"54":1}}],["ontaskerrors",{"2":{"39":2}}],["onlyenabledextensions",{"2":{"39":2}}],["only",{"2":{"39":4}}],["on",{"0":{"18":1},"2":{"2":1,"18":3,"33":10,"39":4}}],["oauth",{"2":{"2":2}}],["dx",{"2":{"52":1,"74":1}}],["dropdown",{"2":{"52":1}}],["drive",{"2":{"2":3}}],["dprint",{"2":{"39":8}}],["dlint",{"2":{"39":8}}],["day",{"2":{"40":2}}],["dangerfile",{"2":{"39":4}}],["dart",{"2":{"39":12}}],["dark",{"2":{"39":2}}],["date=`date",{"2":{"33":2}}],["date",{"2":{"33":14,"39":2}}],["datanpx",{"2":{"38":1}}],["data",{"2":{"8":3,"11":7,"33":4,"38":1}}],["dynamic",{"2":{"35":2}}],["dt",{"2":{"33":2}}],["d",{"2":{"33":2,"39":32}}],["docs",{"2":{"33":2,"34":1}}],["dockerignore",{"2":{"39":2}}],["dockerfile",{"2":{"39":4}}],["docker",{"0":{"32":1},"2":{"39":3}}],["document",{"2":{"14":1,"53":1}}],["dosubscribe",{"2":{"24":1}}],["dom",{"2":{"14":1,"15":2,"17":1}}],["dialyzer",{"2":{"39":2}}],["dialogstyle",{"2":{"39":2}}],["diffeditor",{"2":{"39":2}}],["diffdecorationsgutterwidth",{"2":{"39":2}}],["dirname",{"2":{"38":2}}],["dirs",{"2":{"33":2}}],["dir=`echo",{"2":{"33":4}}],["dir=your",{"2":{"33":2}}],["dir=dev",{"2":{"33":2}}],["dir=",{"2":{"33":4}}],["dir",{"2":{"33":48}}],["directives",{"2":{"18":1}}],["dispatch",{"2":{"33":3}}],["displaylanguage",{"2":{"39":2}}],["display",{"2":{"14":1}}],["dist",{"2":{"33":4,"35":1,"39":2}}],["div",{"2":{"8":6,"11":4,"14":5,"36":2}}],["details",{"2":{"50":1}}],["debounce",{"2":{"46":1}}],["debuganyway",{"2":{"39":2}}],["debug",{"2":{"39":2}}],["deno",{"2":{"39":4}}],["deep",{"2":{"36":2}}],["defineconfig",{"2":{"38":2}}],["defineprops",{"2":{"36":2}}],["defaultformatter",{"2":{"39":8}}],["default",{"2":{"1":2,"11":4,"33":4,"36":12,"38":2,"39":4}}],["description",{"2":{"33":2}}],["designer",{"2":{"39":4}}],["design",{"0":{"29":1},"2":{"53":1}}],["deprecated",{"2":{"42":1}}],["dependencies",{"2":{"33":4}}],["deploy",{"2":{"33":27}}],["delivery",{"2":{"31":1}}],["developer",{"2":{"74":1}}],["devdependencies",{"2":{"38":2,"39":1}}],["dev",{"2":{"4":1,"33":15,"34":2,"38":1,"54":1}}],["devtools",{"2":{"3":1,"42":2}}],["guide",{"2":{"53":2}}],["guides",{"2":{"39":2}}],["gui",{"2":{"44":1}}],["gulp",{"2":{"39":4}}],["generation",{"2":{"54":1}}],["gemfile",{"2":{"39":4}}],["getimageurl",{"2":{"36":4,"37":4}}],["getitem",{"2":{"33":2}}],["getsvgicon",{"2":{"36":6,"37":4}}],["gets",{"2":{"35":4}}],["get",{"2":{"1":2,"4":1,"37":4}}],["gettoken",{"2":{"1":2}}],["getuserdata",{"2":{"1":4}}],["gql",{"2":{"39":4}}],["gz",{"2":{"39":2}}],["gls",{"2":{"39":2}}],["glo",{"2":{"39":2}}],["global",{"2":{"42":1}}],["glob",{"2":{"36":1,"37":4}}],["glg",{"2":{"39":2}}],["governance",{"2":{"39":2}}],["go",{"2":{"39":12}}],["google",{"2":{"2":8,"3":2,"34":1,"53":1,"54":3}}],["g",{"2":{"39":2}}],["grid",{"2":{"50":1,"70":2}}],["grunt",{"2":{"39":4}}],["great",{"2":{"39":2}}],["graphgl",{"2":{"5":1}}],["gh",{"2":{"33":3}}],["gitpod",{"2":{"39":4}}],["gitmessage",{"2":{"39":2}}],["gitmodules",{"2":{"39":2}}],["gitattributes",{"2":{"39":2}}],["gitlens",{"2":{"39":8}}],["gitlab",{"2":{"31":1,"39":4}}],["gitignore",{"2":{"33":2,"39":2}}],["githubpullrequests",{"2":{"39":2}}],["githubissues",{"2":{"39":2}}],["github",{"0":{"33":1},"2":{"31":2,"33":27,"34":3,"39":12,"53":2,"59":1,"73":1}}],["git",{"2":{"31":1,"33":4,"39":20}}],["gatsby",{"2":{"39":10}}],["gateway",{"2":{"3":1}}],["garaguso",{"2":{"29":1}}],["gt",{"2":{"8":24,"10":16,"11":16,"13":2,"14":4,"16":4,"17":2,"18":8,"19":16,"33":27,"35":8,"36":20,"39":3,"52":8,"54":2}}],["gmail",{"2":{"2":1}}],["x",{"2":{"41":4}}],["xshell",{"2":{"39":1}}],["xss",{"2":{"2":1}}],["xo",{"2":{"39":8}}],["xmlhttprequest",{"2":{"54":1}}],["xml",{"2":{"39":8}}],["xaml",{"2":{"39":4}}],["xdv",{"2":{"39":2}}],["xhr",{"2":{"1":1}}],["жизнь",{"2":{"33":1,"44":1}}],["жизненного",{"2":{"11":1}}],["жизни",{"2":{"2":4}}],["жить",{"2":{"7":1}}],["живущий",{"2":{"2":1}}],["железу",{"2":{"54":1}}],["железо",{"2":{"54":1}}],["желательно",{"2":{"53":1}}],["желаю",{"2":{"29":1}}],["жестко",{"2":{"44":1}}],["жесткие",{"2":{"38":1}}],["же",{"2":{"2":2,"7":4,"9":1,"11":3,"15":1,"17":1,"33":1,"34":1,"39":1,"41":1,"42":3,"43":2,"44":1,"45":1,"47":1,"53":1,"54":1}}],["флексбокса",{"2":{"49":1}}],["флагманом",{"2":{"44":1}}],["фоне",{"2":{"44":1}}],["фон",{"2":{"37":1}}],["форсирует",{"2":{"33":1}}],["формочки",{"2":{"54":1}}],["формы",{"2":{"42":1}}],["формальный",{"2":{"11":1}}],["форматировании",{"2":{"54":1}}],["форматирование",{"2":{"39":1}}],["форматирует",{"2":{"39":1}}],["формат",{"2":{"11":1,"37":1}}],["формата",{"2":{"5":1,"54":1}}],["формате",{"2":{"3":1,"11":1,"37":1,"54":1}}],["формируя",{"2":{"9":1}}],["формирует",{"2":{"3":1,"54":1}}],["формирование",{"2":{"1":1}}],["формулу",{"2":{"7":1}}],["форму",{"2":{"2":1,"73":1}}],["фактор",{"2":{"44":1}}],["факт",{"2":{"42":1}}],["фактического",{"2":{"33":1,"54":1}}],["файле",{"2":{"10":1}}],["файлы",{"2":{"9":1,"33":1,"35":1,"38":1,"54":1}}],["файл",{"2":{"9":3,"10":3,"33":4,"36":1,"39":1,"54":2}}],["файлов",{"0":{"24":1},"2":{"9":1,"33":1,"34":1,"36":1,"38":1}}],["файлах",{"2":{"39":1}}],["файла",{"2":{"4":1,"33":3,"54":1}}],["фиксит",{"2":{"45":1}}],["фиксации",{"2":{"25":1}}],["финальном",{"2":{"45":1}}],["фигурные",{"2":{"8":1}}],["футером",{"2":{"45":1}}],["фундаментальное",{"2":{"44":1}}],["фундаментальной",{"2":{"7":1}}],["функционал",{"2":{"45":1,"51":1}}],["функциональной",{"2":{"42":1}}],["функциональностью",{"2":{"11":1}}],["функциональность",{"2":{"7":1,"11":1,"12":1}}],["функциональности",{"2":{"7":3,"25":1}}],["функционала",{"2":{"41":2,"52":1}}],["функциях",{"2":{"44":1}}],["функциями",{"2":{"42":1}}],["функция",{"2":{"11":1,"18":1,"41":1,"42":1,"45":1,"46":1}}],["функцией",{"2":{"11":1,"18":1}}],["функцию",{"2":{"8":1,"18":1,"36":1,"42":1,"46":1}}],["функций",{"2":{"7":2,"11":1,"42":3}}],["функции",{"0":{"24":1},"2":{"3":2,"7":1,"8":1,"11":6,"22":1,"25":1,"29":1,"42":6,"44":1}}],["фулстек",{"2":{"5":1,"39":1}}],["фулстеков",{"2":{"5":1}}],["фрагмента",{"2":{"8":1}}],["фреймворку",{"2":{"15":1}}],["фреймворке",{"2":{"7":1,"41":1,"44":1}}],["фреймворком",{"2":{"6":1,"10":1,"12":1,"25":1,"27":2,"41":1}}],["фреймворков",{"2":{"6":1,"7":2,"26":1,"44":1}}],["фреймворки",{"2":{"6":1,"7":2,"9":1,"19":1,"44":2}}],["фреймворк",{"0":{"6":1,"7":1},"1":{"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1},"2":{"6":1,"7":6,"8":1,"9":1,"18":2,"19":1,"29":1,"42":1}}],["фреймворках",{"0":{"44":1},"2":{"60":1}}],["фреймворка",{"2":{"4":1,"6":1,"7":3,"8":1,"41":2}}],["фронтенда",{"2":{"42":3}}],["фронтенде",{"2":{"42":2,"43":1,"44":2,"45":1,"53":1}}],["фронтендеру",{"2":{"31":1}}],["фронтендера",{"0":{"3":1}}],["фронтендом",{"2":{"4":1}}],["фронтенд",{"0":{"44":1},"2":{"3":1,"34":1,"39":1,"43":1,"44":1,"45":1,"54":1,"57":1,"60":2}}],["фронте",{"2":{"2":3,"5":2,"43":2,"44":1,"45":2,"53":1}}],["фронту",{"2":{"2":1,"3":1}}],["фронт",{"2":{"2":3,"3":2,"39":1}}],["фронта",{"2":{"2":1,"3":1,"44":1}}],["фронтэнде",{"2":{"44":1}}],["фронтэндер",{"2":{"3":1}}],["фронтэнд",{"0":{"45":1},"1":{"46":1,"47":1,"48":1,"49":1,"50":1,"51":1},"2":{"2":1,"3":1,"5":1,"75":1}}],["ей",{"2":{"52":1}}],["единый",{"2":{"52":1}}],["единственный",{"2":{"11":2}}],["единое",{"2":{"9":1}}],["еще",{"0":{"30":1},"2":{"7":1,"9":1,"18":1,"19":1,"26":1,"39":4,"41":1,"44":1,"53":1,"54":2}}],["ее",{"2":{"7":1,"8":1,"10":2,"11":2,"13":1,"45":1}}],["еvent",{"2":{"5":1}}],["ему",{"2":{"2":1,"31":1,"42":1,"54":1}}],["естественно",{"2":{"33":1,"42":1}}],["есть",{"2":{"2":3,"3":4,"6":1,"7":4,"10":2,"11":3,"19":1,"27":1,"33":3,"37":1,"39":1,"40":2,"42":3,"44":3,"45":2,"46":1,"52":1,"53":6,"54":3}}],["если",{"2":{"2":5,"3":2,"4":5,"6":1,"7":1,"9":1,"10":4,"11":2,"13":2,"15":2,"16":1,"19":1,"25":1,"27":2,"33":1,"34":1,"35":2,"37":1,"38":3,"39":1,"41":1,"42":5,"46":2,"47":1,"49":1,"52":1,"53":4,"54":2}}],["её",{"2":{"2":2,"35":1,"44":2,"46":2}}],["его",{"2":{"2":9,"3":2,"4":1,"7":2,"8":2,"10":1,"11":5,"14":2,"18":1,"19":1,"20":1,"33":1,"38":1,"39":2,"42":1,"44":1,"45":3,"51":1,"52":1,"53":1,"54":7,"74":2}}],["jest",{"2":{"39":20,"43":1}}],["jenkins",{"2":{"31":1,"39":4}}],["j",{"2":{"38":1}}],["jpg",{"2":{"37":1}}],["jpeg",{"2":{"34":1}}],["jasmine",{"2":{"39":20}}],["jamesives",{"2":{"33":4}}],["java",{"2":{"6":1,"11":1,"39":2}}],["javascript",{"0":{"68":1},"2":{"3":1,"6":3,"7":2,"8":3,"9":4,"10":6,"11":4,"13":1,"15":1,"16":1,"17":2,"18":2,"25":1,"35":1,"38":2,"39":4,"40":1,"41":2,"42":2,"44":1,"45":1,"52":3,"53":6,"54":4,"68":1}}],["jobs",{"2":{"33":4}}],["jwt",{"2":{"2":4,"74":2}}],["jslint",{"2":{"39":4}}],["jsconfig",{"2":{"39":22}}],["jsconst",{"2":{"33":1,"37":1,"41":1}}],["jsx",{"2":{"39":6}}],["json5",{"2":{"39":2}}],["jsonc",{"2":{"39":2}}],["jsonplaceholder",{"2":{"3":1}}],["json",{"2":{"1":1,"3":1,"5":8,"33":7,"35":1,"37":7,"38":5,"39":96,"53":1,"54":2}}],["jsimport",{"2":{"1":3,"35":1,"38":1}}],["js",{"0":{"29":1,"37":1},"2":{"1":4,"3":3,"9":2,"11":1,"34":1,"35":4,"37":1,"38":5,"39":39,"40":2,"42":1,"44":3,"45":1,"53":3,"54":1}}],["рисуйте",{"2":{"51":1}}],["рисунок",{"2":{"9":1}}],["русском",{"2":{"53":2}}],["рутинного",{"2":{"44":1}}],["рука",{"2":{"39":1}}],["руководству",{"2":{"7":1}}],["рублей",{"2":{"34":1}}],["ручном",{"2":{"33":1,"39":1}}],["ряд",{"2":{"11":2}}],["ряда",{"2":{"9":1}}],["родился",{"2":{"54":1}}],["родительскому",{"2":{"11":1}}],["родительского",{"2":{"10":1,"11":1}}],["роста",{"2":{"11":1,"48":1}}],["роли",{"2":{"44":1}}],["роль",{"2":{"42":1,"44":1,"53":1}}],["ролью",{"2":{"2":1}}],["ролям",{"2":{"2":1}}],["рывка",{"2":{"7":1}}],["резюме",{"2":{"53":1}}],["результирующее",{"2":{"7":1}}],["результат",{"2":{"3":1,"11":1}}],["рефакторинг",{"0":{"48":1},"2":{"48":1}}],["регулярный",{"0":{"48":1}}],["регистрирует",{"2":{"44":1}}],["регистра",{"2":{"23":1}}],["регистре",{"2":{"21":1,"22":1}}],["рекламных",{"2":{"46":1}}],["рекомендует",{"2":{"39":1}}],["рекомендуется",{"2":{"34":1,"38":1}}],["рекомендаций",{"2":{"20":1}}],["реконнект",{"2":{"5":1}}],["редактор",{"2":{"39":1}}],["редакторе",{"2":{"39":1}}],["редко",{"2":{"2":1}}],["режиме",{"2":{"33":1,"39":2,"42":1,"43":1}}],["режима",{"2":{"4":1}}],["репозиторий",{"2":{"39":1}}],["репозитория",{"2":{"33":4}}],["репозитории",{"2":{"31":1}}],["рендерингу",{"2":{"19":1}}],["рендеринге",{"2":{"13":1}}],["реактивная",{"2":{"11":1,"13":2,"41":1,"44":1}}],["реактивный",{"2":{"42":2,"44":2}}],["реактивных",{"2":{"11":1,"41":1,"44":1}}],["реактивным",{"2":{"11":2}}],["реактивными",{"2":{"11":1}}],["реактивные",{"2":{"8":1,"11":2,"22":1,"42":3,"44":2}}],["реактивной",{"2":{"11":1,"13":1}}],["реактивном",{"2":{"7":2,"44":1}}],["реактивностью",{"2":{"44":2}}],["реактивность",{"2":{"7":1,"44":2}}],["реактивности",{"2":{"6":1,"44":2}}],["реактивную",{"2":{"6":1,"11":2,"42":1,"44":1}}],["реально",{"2":{"46":1}}],["реальный",{"2":{"53":1}}],["реальные",{"2":{"43":1}}],["реальным",{"2":{"26":1}}],["реальными",{"2":{"3":1}}],["реальных",{"2":{"7":1}}],["реализацию",{"2":{"46":1}}],["реализация",{"2":{"41":1}}],["реализации",{"2":{"5":1,"19":1,"26":1,"41":2,"51":1}}],["реализованы",{"2":{"6":1,"7":1}}],["решили",{"2":{"45":3}}],["решить",{"2":{"33":1,"35":1}}],["решений",{"2":{"33":1,"54":1}}],["решения",{"2":{"19":1,"54":1}}],["решением",{"2":{"3":1,"39":1}}],["решение",{"2":{"3":1,"4":2,"5":1,"7":1,"44":1,"53":1}}],["решётки",{"2":{"8":1}}],["решали",{"2":{"6":1}}],["решает",{"2":{"2":1,"7":1,"42":1}}],["релевантные",{"2":{"3":1}}],["ресурсы",{"0":{"35":1},"1":{"36":1,"37":1},"2":{"35":4,"38":1,"45":1,"53":1}}],["ресурса",{"2":{"35":1}}],["ресурсах",{"2":{"29":1}}],["ресурсами",{"2":{"3":1,"35":1,"54":2}}],["ресурсам",{"2":{"2":1,"35":1}}],["ресурсов",{"2":{"4":2,"35":1,"54":1}}],["ресурсу",{"2":{"2":1,"4":2}}],["ресурс",{"2":{"2":2,"4":2,"53":1}}],["рано",{"2":{"46":1}}],["раньше",{"2":{"39":1}}],["ранее",{"2":{"10":1,"33":1}}],["равна",{"2":{"14":1}}],["равно",{"2":{"11":1,"14":1,"53":1}}],["рабочий",{"2":{"9":1,"29":1,"31":2}}],["рабочего",{"2":{"8":1,"9":1,"10":1,"11":1,"29":1}}],["работу",{"2":{"43":1}}],["работе",{"2":{"19":1,"27":1,"39":2,"44":2}}],["работали",{"2":{"11":1}}],["работают",{"2":{"3":1,"10":1,"42":1}}],["работать",{"2":{"3":1,"5":1,"7":1,"9":1,"19":1,"39":2,"42":1,"54":1}}],["работает",{"2":{"2":2,"39":1,"41":3,"44":1,"46":1,"53":1,"54":2}}],["работы",{"2":{"2":1,"3":1,"4":1,"7":1,"10":1,"18":1,"26":1,"27":1,"35":1,"40":1,"54":2,"74":3}}],["рамками",{"2":{"10":1}}],["рамках",{"2":{"7":1,"12":1}}],["рамки",{"2":{"6":1,"7":1}}],["расшаривать",{"2":{"42":1}}],["расширить",{"2":{"53":1}}],["расширяемость",{"2":{"52":1}}],["расширять",{"2":{"7":1,"38":1}}],["расширении",{"2":{"44":1}}],["расширений",{"2":{"39":1}}],["расширением",{"2":{"10":1}}],["расширения",{"2":{"4":1,"39":2}}],["располагались",{"2":{"52":1}}],["расползлись",{"2":{"42":1}}],["располнела",{"2":{"41":1}}],["распределение",{"2":{"54":1}}],["распределяются",{"2":{"2":1}}],["распространяющихся",{"2":{"10":1}}],["распространены",{"2":{"53":1}}],["распространенного",{"2":{"52":1}}],["распространенность",{"2":{"44":1}}],["распространенные",{"2":{"44":1}}],["распространенными",{"2":{"6":1}}],["распространенный",{"2":{"2":1}}],["распространения",{"2":{"8":1}}],["раскрывает",{"2":{"8":1}}],["рассказано",{"2":{"17":1}}],["рассказать",{"2":{"7":1}}],["рассмотрен",{"2":{"29":1}}],["рассмотрим",{"2":{"6":1,"7":1,"8":1,"10":2,"11":1,"12":1,"17":1,"19":2,"29":1}}],["рассматривает",{"2":{"54":1}}],["рассматривать",{"2":{"9":1,"11":1}}],["рассматриваться",{"2":{"8":1}}],["рассматриваются",{"2":{"6":1}}],["раздаются",{"2":{"54":1}}],["разделять",{"2":{"42":1}}],["разделах",{"2":{"10":1,"60":1}}],["раздела",{"2":{"10":1}}],["разделив",{"2":{"7":1}}],["разделение",{"2":{"52":1}}],["разделения",{"2":{"10":1}}],["разделенных",{"2":{"4":1}}],["разделе",{"2":{"4":1,"8":1,"18":1}}],["разделы",{"2":{"2":1}}],["разбираться",{"2":{"54":1}}],["разбивается",{"2":{"45":1}}],["разбиения",{"2":{"44":2}}],["раза",{"2":{"42":1}}],["развитие",{"0":{"73":1}}],["развития",{"2":{"6":1}}],["развивается",{"2":{"44":1}}],["развертывания",{"2":{"31":1,"33":1}}],["развертывание",{"2":{"29":1}}],["развертыванием",{"2":{"29":1,"33":1}}],["размонтировании",{"2":{"19":1}}],["разместить",{"2":{"34":3}}],["разместим",{"2":{"10":1}}],["размер",{"2":{"11":1,"35":2,"46":1}}],["размера",{"2":{"7":3,"35":1}}],["размещено",{"2":{"8":1}}],["размещения",{"2":{"3":1,"8":1,"34":1,"54":1}}],["разметки",{"2":{"6":1}}],["различающихся",{"2":{"42":1}}],["различный",{"2":{"10":1}}],["различные",{"2":{"6":2}}],["различных",{"2":{"6":1,"53":1}}],["различными",{"2":{"3":1,"29":1,"44":1}}],["различие",{"2":{"6":1,"7":1}}],["разряда",{"2":{"49":1}}],["разрабатываешь",{"2":{"45":1}}],["разрабатываемого",{"2":{"31":1}}],["разрабатывать",{"2":{"44":1,"45":1,"54":1}}],["разработка",{"2":{"43":1,"60":1,"62":1,"63":1}}],["разработкой",{"2":{"43":1}}],["разработку",{"2":{"7":1,"44":1,"52":2}}],["разработки",{"2":{"7":2,"11":1,"34":1,"39":3,"43":1,"44":1,"45":1}}],["разработке",{"2":{"4":1,"27":1,"39":1,"54":1}}],["разработан",{"2":{"7":1}}],["разработчиком",{"2":{"53":1}}],["разработчиков",{"2":{"20":1,"43":1,"53":1,"75":1}}],["разработчики",{"2":{"52":2}}],["разработчику",{"2":{"52":1,"53":1}}],["разработчика",{"2":{"8":1,"42":2,"51":1,"53":1,"74":1}}],["разработчик",{"2":{"3":1,"7":1,"42":1}}],["разрешили",{"2":{"54":1}}],["разрешает",{"2":{"4":1}}],["разрешать",{"2":{"2":1}}],["разрешен",{"2":{"4":3}}],["разрешений",{"2":{"45":1}}],["разрешения",{"2":{"2":1}}],["разрешение",{"2":{"2":2}}],["разному",{"2":{"54":1}}],["разного",{"2":{"44":1}}],["разницей",{"2":{"15":1}}],["разница",{"2":{"7":1,"27":1,"53":1}}],["разницы",{"2":{"2":1}}],["разных",{"2":{"4":1,"42":1,"45":1,"60":1}}],["разный",{"2":{"2":1}}],["разные",{"0":{"11":1},"2":{"2":1,"38":1,"45":1,"54":1}}],["раз",{"2":{"2":3,"7":1,"11":1,"13":1,"38":2,"42":1,"54":1}}],["sw",{"2":{"54":1,"74":1}}],["swagger",{"2":{"53":1}}],["svelte",{"2":{"39":6,"44":3}}],["svgo",{"2":{"39":20}}],["svgresources",{"2":{"37":8}}],["svg",{"2":{"36":4,"37":3,"38":1,"39":4}}],["synctex",{"2":{"39":2}}],["sass",{"2":{"39":2}}],["save",{"2":{"39":2}}],["smoothscrolling",{"2":{"39":2}}],["sftp",{"2":{"39":1}}],["sfc",{"2":{"10":3,"18":1,"19":1,"39":2,"44":1}}],["s3",{"2":{"34":1}}],["s",{"2":{"33":2,"35":1,"38":1,"42":1}}],["solvery",{"2":{"53":1}}],["somearr",{"2":{"44":8}}],["someimage",{"2":{"35":2}}],["somefunc",{"2":{"3":1}}],["social",{"2":{"35":1}}],["source",{"2":{"33":2,"39":6}}],["snickerbockers",{"2":{"33":3}}],["snake",{"2":{"22":1}}],["ssg",{"0":{"54":1},"2":{"54":3}}],["ssd",{"2":{"39":1}}],["ssr",{"0":{"54":1},"2":{"39":2,"42":2,"54":9}}],["ss06",{"2":{"39":2}}],["ss03",{"2":{"39":2}}],["ss02",{"2":{"39":2}}],["ss01",{"2":{"39":2}}],["ssl",{"2":{"34":2}}],["ssh",{"2":{"33":23,"39":2}}],["sso",{"2":{"2":2}}],["store",{"2":{"42":2}}],["story",{"2":{"39":2}}],["sticky",{"2":{"39":2}}],["stickyscroll",{"2":{"39":2}}],["staged",{"2":{"39":4}}],["staging",{"2":{"33":6}}],["stackblitz",{"2":{"39":5}}],["stateful",{"2":{"42":1}}],["state",{"0":{"42":1},"2":{"39":2,"42":5}}],["static",{"2":{"35":2,"54":1}}],["stash",{"2":{"39":6}}],["stringhelpers",{"2":{"45":1}}],["string",{"2":{"35":2,"36":12}}],["steps",{"2":{"33":4}}],["stylelint",{"2":{"39":8}}],["styleci",{"2":{"39":4}}],["style=",{"2":{"36":4}}],["style",{"2":{"10":5,"36":4,"39":1,"53":2}}],["sponsors",{"2":{"39":2}}],["spec",{"2":{"39":2}}],["special",{"2":{"19":1}}],["span",{"2":{"16":5}}],["spa",{"0":{"54":1},"2":{"2":1,"54":10}}],["sum",{"2":{"39":4}}],["suggestselection",{"2":{"39":2}}],["substring",{"2":{"37":4}}],["submodules",{"2":{"33":6}}],["sudo",{"2":{"33":6}}],["suspense",{"2":{"19":1}}],["supabase",{"2":{"3":2,"53":1}}],["sheet",{"0":{"66":1},"1":{"67":1,"68":1,"69":1,"70":1,"71":1,"72":1},"2":{"67":1,"68":1,"69":1,"70":4}}],["shell",{"2":{"39":2,"45":1}}],["shims",{"2":{"39":2}}],["sh",{"2":{"39":4}}],["shrinkwrap",{"2":{"39":4}}],["shnpx",{"2":{"38":1}}],["shpnpm",{"2":{"38":1}}],["showdocumentation",{"2":{"39":2}}],["showsuggestionsassnippets",{"2":{"39":2}}],["show=",{"2":{"14":2}}],["show",{"0":{"14":1},"2":{"14":1,"15":3,"19":1}}],["shallowref",{"2":{"41":2}}],["shaking",{"2":{"37":2,"46":1}}],["sha",{"2":{"7":1}}],["sharing",{"2":{"4":1}}],["src",{"2":{"13":1,"35":1,"38":4}}],["src=",{"2":{"8":2,"13":2,"35":6,"36":2}}],["scmitem",{"2":{"39":2}}],["scmgroupinline",{"2":{"39":2}}],["scmgroup",{"2":{"39":2}}],["scm",{"2":{"39":4}}],["scss",{"2":{"36":2,"39":2}}],["scoped",{"2":{"10":4,"36":2}}],["scripts",{"2":{"33":2}}],["script",{"0":{"11":1},"2":{"8":10,"10":5,"11":15,"19":4,"33":4,"36":4,"39":1,"41":1}}],["sql",{"2":{"5":1,"33":2,"39":1,"42":2,"53":1}}],["side",{"2":{"54":1}}],["simple",{"2":{"39":8}}],["simpledialog",{"2":{"39":2}}],["size",{"2":{"36":10}}],["size=",{"2":{"35":2}}],["site",{"2":{"4":4,"33":25,"54":1}}],["sign",{"2":{"2":1}}],["singlequote",{"2":{"39":2}}],["singleclick",{"2":{"39":2}}],["single",{"2":{"2":1,"54":1}}],["seo",{"0":{"54":1},"2":{"54":1}}],["section",{"2":{"50":1}}],["security",{"2":{"39":2}}],["secrets",{"2":{"33":3}}],["sentry",{"2":{"39":4}}],["semi",{"2":{"39":2}}],["search",{"2":{"39":2}}],["separate",{"2":{"39":2}}],["select",{"2":{"17":1,"52":2}}],["server",{"2":{"4":4,"33":5,"39":10,"54":1}}],["service",{"2":{"3":1,"25":1,"39":2,"54":3,"74":1}}],["services",{"2":{"1":2}}],["setsomearr",{"2":{"44":2}}],["setitem",{"2":{"33":2}}],["setting",{"2":{"33":2,"39":1}}],["settings",{"2":{"33":1,"39":1}}],["settokencallback",{"2":{"1":2}}],["setup",{"0":{"11":1},"2":{"10":3,"11":8,"19":2,"33":7,"36":2,"39":1,"41":1}}],["setlogoutcallback",{"2":{"1":2}}],["set",{"2":{"1":2,"37":4}}],["setbaseurl",{"2":{"1":2}}],["пытаться",{"2":{"45":1}}],["пытаются",{"2":{"45":1}}],["пытается",{"2":{"39":1}}],["п",{"2":{"43":1,"45":1,"74":1}}],["пк",{"2":{"39":2}}],["песочницы",{"2":{"39":1}}],["песочнице",{"2":{"38":1}}],["пет",{"2":{"33":1}}],["первых",{"2":{"53":1,"75":1}}],["первый",{"2":{"11":1}}],["первой",{"2":{"53":1,"54":1}}],["первоначальном",{"2":{"13":1}}],["первого",{"2":{"8":1}}],["первоклассные",{"2":{"6":1}}],["первом",{"2":{"2":2,"54":1}}],["переименовывая",{"2":{"48":1}}],["переименовываются",{"2":{"35":1}}],["перемещая",{"2":{"48":1}}],["переменным",{"2":{"11":2}}],["переменными",{"2":{"11":1}}],["переменные",{"0":{"21":1},"2":{"8":1,"10":1,"11":4,"42":1,"44":2}}],["переменных",{"2":{"7":1,"11":1,"19":1,"41":1}}],["переменной",{"2":{"7":2,"8":1,"11":3,"13":2,"17":2,"19":2,"41":2,"42":1,"44":2}}],["переменная",{"2":{"7":2,"8":1,"11":1,"13":3,"14":2,"44":2}}],["переменную",{"2":{"7":1,"11":2,"14":1,"18":1,"42":2,"44":1}}],["переписывание",{"2":{"43":1}}],["переписываете",{"2":{"42":1}}],["пересылает",{"2":{"54":1}}],["пересылаемый",{"2":{"2":1}}],["перестанет",{"2":{"46":1}}],["перестает",{"2":{"42":1}}],["пересчитали",{"2":{"44":1}}],["перезагрузку",{"2":{"33":1}}],["переведена",{"0":{"30":1}}],["перевести",{"2":{"5":1}}],["переносится",{"2":{"39":1}}],["переносить",{"2":{"19":1}}],["переносе",{"2":{"6":1}}],["переключаться",{"2":{"15":1}}],["перекрестного",{"2":{"4":1}}],["перерасти",{"2":{"7":1}}],["передавать",{"2":{"44":1}}],["передавая",{"2":{"8":1}}],["переданным",{"2":{"15":1}}],["передачи",{"2":{"11":1}}],["передать",{"2":{"10":1,"42":2}}],["передаем",{"2":{"8":1}}],["передаёт",{"2":{"2":1}}],["перед",{"2":{"7":2,"11":1,"35":1,"53":1}}],["переходов",{"2":{"19":1}}],["перехода",{"2":{"19":1,"31":1}}],["переход",{"2":{"5":1,"47":1}}],["перелогиниваться",{"2":{"2":1}}],["перелогин",{"2":{"2":1}}],["пять",{"2":{"16":1}}],["пишет",{"2":{"54":1}}],["пишем",{"2":{"10":1}}],["пишутся",{"2":{"21":1,"24":1}}],["писать",{"2":{"11":1,"25":1,"42":1,"44":1}}],["памяти",{"2":{"39":1}}],["папке",{"2":{"35":1}}],["папки",{"2":{"35":2}}],["папку",{"2":{"35":3}}],["пабло",{"2":{"29":1}}],["паттерн",{"2":{"41":1}}],["паттернов",{"2":{"26":1}}],["паттерны",{"2":{"6":2,"29":2,"52":1}}],["пакетов",{"2":{"39":1}}],["пакетами",{"2":{"38":1}}],["пакета",{"2":{"11":1,"40":1}}],["пакет",{"2":{"9":1,"39":1,"46":1}}],["пару",{"2":{"39":1,"41":1,"49":1}}],["параграфы",{"2":{"53":1}}],["параметрами",{"2":{"33":1}}],["параметры",{"2":{"11":2}}],["парадигму",{"2":{"6":1}}],["парадигмы",{"2":{"6":2}}],["пароль",{"2":{"2":1,"42":1}}],["паутина",{"2":{"6":1}}],["пусть",{"2":{"45":1,"49":1}}],["пуша",{"2":{"33":1}}],["публикации",{"2":{"29":1}}],["путях",{"2":{"38":1}}],["путь",{"0":{"9":2},"2":{"10":1,"26":1}}],["путем",{"2":{"4":1}}],["пупкина",{"2":{"2":1}}],["пупкин",{"2":{"2":1}}],["плевел",{"2":{"53":1}}],["плохие",{"2":{"52":1}}],["плохо",{"2":{"52":1}}],["плохой",{"2":{"41":1}}],["плохая",{"2":{"42":2}}],["платежей",{"2":{"45":1}}],["платить",{"2":{"11":1}}],["плане",{"2":{"41":1,"42":1,"52":1}}],["планами",{"2":{"34":1}}],["планы",{"2":{"3":2}}],["плагина",{"2":{"54":1}}],["плагинами",{"2":{"38":1}}],["плагины",{"2":{"6":1,"38":1,"42":1}}],["плагинов",{"2":{"6":1,"10":1,"38":1,"39":1}}],["плюсы",{"2":{"52":2}}],["плюс",{"2":{"2":1,"11":1,"33":1,"42":1}}],["покупателей",{"2":{"54":1}}],["показ",{"2":{"45":1}}],["показывали",{"2":{"53":1,"54":1}}],["показывать",{"2":{"44":1,"54":1}}],["показываться",{"2":{"15":1}}],["показывания",{"2":{"33":1}}],["показывают",{"2":{"15":1}}],["показывая",{"2":{"15":1}}],["показывает",{"2":{"14":1}}],["показа",{"2":{"15":2,"35":1}}],["показано",{"2":{"11":1}}],["показаться",{"2":{"10":3}}],["пока",{"2":{"6":1,"7":1,"10":1,"19":2}}],["поисковых",{"2":{"54":1}}],["поисковиков",{"2":{"54":1}}],["поисковик",{"2":{"54":1}}],["поисковиками",{"2":{"54":1}}],["поискать",{"2":{"37":1}}],["поиграйте",{"2":{"53":1}}],["поизучайте",{"2":{"53":1}}],["поэкспериментируйте",{"2":{"53":1}}],["поэтому",{"2":{"7":1,"8":1,"9":1,"11":2,"19":2,"25":1,"26":1,"39":2,"41":1,"42":1,"44":1,"45":1,"54":1}}],["почти",{"2":{"53":1}}],["почему",{"2":{"5":1,"27":2,"44":1,"52":1,"53":1}}],["похудеет",{"2":{"41":1}}],["похожи",{"2":{"15":1}}],["похакать",{"2":{"3":1}}],["повышение",{"2":{"75":1}}],["повышает",{"2":{"45":1}}],["повышается",{"2":{"45":1,"54":1}}],["повысит",{"2":{"51":1}}],["повысить",{"2":{"29":1,"45":1}}],["повторяющегося",{"2":{"44":1}}],["повторно",{"2":{"11":1}}],["повторного",{"2":{"11":1}}],["поверх",{"2":{"7":2}}],["поведение",{"2":{"6":1,"12":1,"44":1}}],["поведением",{"2":{"6":1}}],["поговорим",{"2":{"10":1}}],["помещаться",{"2":{"35":1}}],["помещаются",{"2":{"35":1}}],["поместить",{"2":{"45":1}}],["поместит",{"2":{"10":1}}],["помнить",{"2":{"9":1,"10":1,"42":1}}],["поможет",{"2":{"53":1}}],["помогает",{"2":{"19":1,"53":1}}],["помогают",{"2":{"9":1,"52":1,"53":1}}],["помогающая",{"2":{"7":1}}],["помогут",{"2":{"6":1,"20":1}}],["помочь",{"2":{"4":1,"27":1,"53":1}}],["помощью",{"2":{"3":1,"10":2,"11":1,"18":2,"19":1,"29":3,"34":1,"39":1,"42":1}}],["поймать",{"2":{"41":1}}],["поймем",{"2":{"7":1}}],["пойдет",{"2":{"3":1}}],["потратьте",{"2":{"39":1,"49":1}}],["потребует",{"2":{"7":1}}],["потери",{"2":{"37":1}}],["потерять",{"2":{"2":1}}],["потом",{"2":{"42":2,"54":2}}],["потомок",{"2":{"42":1}}],["потомком",{"2":{"42":1}}],["потому",{"2":{"33":1,"42":1,"54":1}}],["потоке",{"2":{"44":1}}],["потоком",{"2":{"10":1,"11":1,"29":2,"44":1}}],["поток",{"2":{"7":1,"41":1}}],["поздно",{"2":{"46":1}}],["позаботится",{"2":{"11":1}}],["позже",{"2":{"8":1,"19":1,"54":1}}],["позволяют",{"2":{"34":1,"38":1}}],["позволяющие",{"2":{"6":1}}],["позволяющий",{"2":{"4":1}}],["позволяя",{"2":{"31":1}}],["позволяет",{"2":{"7":1,"10":1,"19":1,"33":1,"39":1,"42":1,"44":2,"45":2,"54":2}}],["познакомимся",{"2":{"6":1,"29":1}}],["появляются",{"2":{"39":1}}],["появления",{"2":{"54":1}}],["появлению",{"2":{"11":1}}],["появлением",{"2":{"6":1}}],["появятся",{"2":{"19":1}}],["появилась",{"2":{"44":1}}],["появился",{"2":{"42":1,"54":1}}],["появилось",{"2":{"41":1,"42":1}}],["появились",{"2":{"6":1,"42":1}}],["появится",{"2":{"4":1,"14":1}}],["попробуйте",{"2":{"37":1,"39":1,"53":2}}],["попробует",{"2":{"37":1}}],["попутно",{"2":{"6":1}}],["популярна",{"2":{"41":1}}],["популярности",{"2":{"39":1}}],["популярность",{"2":{"25":1}}],["популярным",{"2":{"54":1}}],["популярные",{"2":{"38":1}}],["популярных",{"2":{"6":1}}],["популярный",{"2":{"3":1,"33":1}}],["популяризация",{"2":{"5":2}}],["попытка",{"2":{"5":1}}],["поработайте",{"2":{"53":2}}],["порой",{"2":{"53":1}}],["порог",{"2":{"44":1}}],["порождает",{"2":{"9":1}}],["порекомендовать",{"2":{"25":1}}],["порядки",{"2":{"54":1}}],["порядке",{"2":{"9":1}}],["порядка",{"2":{"9":1}}],["порядок",{"2":{"5":1}}],["пор",{"2":{"7":1,"9":1,"18":1,"19":1}}],["портом",{"2":{"4":1}}],["портал",{"2":{"2":1}}],["посмотрите",{"2":{"39":1,"53":1}}],["посмотреть",{"2":{"7":1,"38":1,"39":1,"53":1,"54":1}}],["поскольку",{"2":{"7":1,"8":1,"11":1,"19":1,"20":1}}],["последовательной",{"2":{"25":1}}],["последние",{"2":{"41":1}}],["последних",{"2":{"33":1}}],["последней",{"2":{"10":1}}],["последняя",{"2":{"6":1}}],["после",{"2":{"5":1,"15":1,"18":1,"31":1,"33":2,"34":1,"42":1,"54":3}}],["посылать",{"2":{"5":1}}],["посредником",{"2":{"4":1}}],["построения",{"2":{"7":3}}],["построен",{"2":{"7":1,"9":1}}],["построенные",{"2":{"7":1,"42":1}}],["построены",{"2":{"7":1}}],["построить",{"2":{"7":1}}],["постепенно",{"2":{"6":1,"7":1}}],["поставщиков",{"2":{"5":1}}],["поставив",{"2":{"3":1}}],["поставить",{"2":{"3":1,"39":1}}],["постоянным",{"2":{"2":1}}],["поняв",{"2":{"19":1}}],["понятную",{"2":{"52":1}}],["понятные",{"2":{"38":1}}],["понятным",{"2":{"5":1}}],["понять",{"2":{"20":1,"42":1,"53":1}}],["понятий",{"2":{"9":1}}],["понятиями",{"2":{"29":1}}],["понятия",{"2":{"7":1,"9":1,"26":1,"45":1}}],["понятии",{"2":{"7":1}}],["понятие",{"2":{"2":1,"8":1,"44":1}}],["поначалу",{"2":{"10":1}}],["понадобится",{"2":{"8":1,"38":1}}],["понимаются",{"2":{"35":1}}],["понимание",{"0":{"10":1},"2":{"53":1}}],["понимать",{"2":{"2":1,"7":1,"53":1}}],["подгружается",{"2":{"54":1}}],["подготовки",{"2":{"53":1}}],["подготовлены",{"2":{"19":1}}],["подарила",{"2":{"54":1}}],["подскажите",{"0":{"40":1}}],["подсоединение",{"2":{"39":1}}],["поделился",{"2":{"39":1}}],["подключать",{"2":{"35":1,"42":1,"46":2}}],["подключаются",{"2":{"35":1}}],["подключить",{"2":{"34":1}}],["под",{"2":{"35":1,"43":1,"44":1}}],["поддается",{"2":{"54":1}}],["поддержка",{"2":{"42":2}}],["поддержки",{"2":{"41":2,"53":1}}],["поддержкой",{"2":{"38":1}}],["поддерживаемость",{"2":{"52":1}}],["поддерживается",{"2":{"10":1,"11":2,"37":1}}],["поддерживать",{"2":{"45":1}}],["поддерживаться",{"2":{"42":1,"46":1}}],["поддерживая",{"2":{"17":1}}],["поддиректории",{"2":{"35":1}}],["поддиректориями",{"2":{"33":1}}],["поддомены",{"2":{"34":1}}],["подведение",{"0":{"26":1}}],["подчеркивания",{"2":{"21":1}}],["подчеркивает",{"2":{"7":1}}],["подразумевается",{"2":{"54":1}}],["подразумевает",{"2":{"7":1}}],["подробно",{"2":{"10":2,"11":1,"29":1,"35":1}}],["подробная",{"2":{"4":1}}],["подробнее",{"2":{"2":1,"17":1,"38":1}}],["подход",{"2":{"52":1,"54":1}}],["подходящая",{"2":{"45":1}}],["подходящем",{"2":{"3":1}}],["подходят",{"2":{"42":1}}],["подходит",{"2":{"39":1,"44":1,"45":1,"54":2}}],["подходы",{"2":{"11":1,"44":1}}],["подходу",{"2":{"7":1}}],["подходов",{"2":{"7":1}}],["подхода",{"2":{"7":1,"11":1}}],["подобранных",{"2":{"39":1}}],["подобные",{"2":{"54":1}}],["подобный",{"2":{"3":1,"4":1,"52":1}}],["подобно",{"2":{"16":1}}],["подобном",{"2":{"11":1}}],["подождите",{"2":{"11":1}}],["подозрительные",{"2":{"2":1}}],["подписывания",{"2":{"2":1}}],["полиморфизмом",{"2":{"45":1}}],["полтора",{"2":{"42":1}}],["пользоваться",{"2":{"42":1,"44":1,"52":1}}],["пользователем",{"2":{"44":1,"45":1}}],["пользователей",{"2":{"6":1,"43":1,"45":1,"54":2}}],["пользователю",{"2":{"2":1,"33":1,"44":1}}],["пользователи",{"2":{"2":1}}],["пользователям",{"2":{"2":1}}],["пользователя",{"2":{"2":7,"29":1,"33":1,"45":1,"54":3,"74":1}}],["пользовательский",{"2":{"54":1}}],["пользовательских",{"2":{"7":2}}],["пользовательского",{"2":{"10":2,"17":1,"29":1}}],["пользователь",{"2":{"2":6,"17":1,"19":1,"41":1,"42":1,"44":2}}],["пользуется",{"2":{"42":1}}],["положить",{"2":{"35":1}}],["полный",{"2":{"18":1,"42":1}}],["полностью",{"2":{"7":1,"11":1,"15":1}}],["полноценное",{"2":{"3":1}}],["полноценной",{"2":{"3":1}}],["полно",{"2":{"3":1,"52":1}}],["полезен",{"2":{"53":1,"54":1}}],["полезно",{"2":{"48":1}}],["полезность",{"2":{"43":1}}],["полезного",{"2":{"39":1}}],["полезной",{"2":{"33":1}}],["полезные",{"0":{"41":1},"2":{"39":1,"45":1,"53":1,"63":1}}],["полезных",{"2":{"39":1}}],["полезны",{"2":{"31":1,"43":1,"54":1}}],["поле",{"2":{"11":2,"16":1,"42":1,"44":1}}],["полей",{"2":{"8":1}}],["полями",{"2":{"10":1,"11":1}}],["поля",{"2":{"8":1,"11":3,"44":1}}],["получения",{"2":{"11":1}}],["получении",{"2":{"2":1}}],["получится",{"2":{"53":1}}],["получит",{"2":{"13":1}}],["получить",{"2":{"2":1,"11":3,"31":1,"34":1,"54":1}}],["получил",{"2":{"11":1}}],["получать",{"2":{"3":1,"53":1,"54":1}}],["получаете",{"2":{"34":1}}],["получается",{"2":{"11":1,"33":1,"35":1,"41":1,"45":1,"54":3}}],["получает",{"2":{"2":1,"4":1,"54":1}}],["по",{"2":{"2":4,"3":3,"4":3,"6":4,"7":3,"8":1,"9":1,"11":3,"16":1,"18":1,"26":2,"33":2,"34":1,"35":4,"36":1,"38":2,"39":2,"41":2,"42":5,"43":1,"45":2,"51":1,"52":1,"53":7,"54":8,"75":1}}],["прямым",{"2":{"42":1}}],["прямо",{"2":{"39":1}}],["пр",{"2":{"38":1}}],["прекрасный",{"2":{"53":1}}],["презентационный",{"2":{"52":1}}],["претенциозной",{"2":{"41":1}}],["претерпела",{"2":{"6":1}}],["префикс",{"2":{"13":1}}],["превзойти",{"2":{"11":1}}],["превратится",{"2":{"18":1}}],["превратятся",{"2":{"11":1}}],["превращается",{"2":{"10":1}}],["преобразования",{"2":{"9":1}}],["преследуете",{"2":{"8":1}}],["преимуществом",{"2":{"9":1,"10":1}}],["преимуществами",{"2":{"7":2,"42":1}}],["преимуществ",{"2":{"7":1,"11":2}}],["преимущественно",{"2":{"5":1,"42":1,"44":1}}],["прежде",{"2":{"7":1}}],["прежним",{"2":{"5":1,"6":1}}],["предисловие",{"0":{"75":1}}],["предварительный",{"2":{"53":1}}],["предварительно",{"2":{"53":2,"54":1}}],["предыдущую",{"2":{"53":1}}],["предыдущий",{"2":{"18":1}}],["предыдущие",{"2":{"18":1}}],["предыдущих",{"2":{"10":1}}],["предназначались",{"2":{"53":1}}],["предназначенных",{"2":{"6":1}}],["пределами",{"2":{"42":1,"44":1}}],["пределы",{"2":{"19":2}}],["преданность",{"2":{"29":1}}],["предпочтительно",{"2":{"15":1}}],["предписаны",{"2":{"25":1}}],["предписано",{"2":{"19":1}}],["предписанный",{"2":{"10":1}}],["предписывает",{"2":{"7":1,"9":1,"11":1}}],["предписывается",{"2":{"7":1}}],["предписывают",{"2":{"7":1}}],["предусмотрены",{"2":{"12":1}}],["предотвращая",{"2":{"10":1}}],["предоставления",{"2":{"4":1}}],["предоставляющих",{"2":{"25":1}}],["предоставляются",{"2":{"12":1}}],["предоставляют",{"2":{"3":1,"6":1,"7":1,"34":1,"52":1}}],["предоставлять",{"2":{"4":1,"42":1}}],["предоставляется",{"2":{"4":1,"19":1}}],["предоставляет",{"2":{"3":4,"4":1,"6":1,"11":1,"18":2,"19":1}}],["представьте",{"2":{"42":1}}],["представим",{"2":{"29":1}}],["представить",{"2":{"9":1}}],["представления",{"2":{"44":1}}],["представление",{"2":{"6":1,"9":2,"29":1}}],["представлять",{"2":{"42":1}}],["представляют",{"2":{"9":1}}],["представляет",{"2":{"7":1,"10":1}}],["представлял",{"2":{"6":1}}],["предстоит",{"2":{"7":1}}],["предложил",{"2":{"53":1,"54":1}}],["предложить",{"2":{"7":1,"73":1}}],["предложений",{"2":{"44":1}}],["предложения",{"2":{"15":1}}],["предлагает",{"2":{"7":1,"9":1}}],["предлагаемого",{"2":{"7":1}}],["предлагают",{"2":{"52":1,"53":1}}],["предлагаю",{"2":{"5":1}}],["предлагающих",{"2":{"3":1}}],["предмет",{"2":{"3":1}}],["практик",{"2":{"29":1,"53":1,"74":1}}],["практикой",{"2":{"20":1,"41":1}}],["практиками",{"2":{"53":1}}],["практика",{"2":{"10":1,"42":1}}],["практике",{"2":{"7":1,"10":1}}],["практики",{"2":{"2":1,"6":1,"52":1,"53":1}}],["правильных",{"2":{"53":1}}],["правильно",{"2":{"10":1}}],["правила",{"2":{"6":1,"7":1,"10":1,"44":1}}],["правая",{"2":{"39":1}}],["права",{"2":{"2":1}}],["право",{"2":{"2":3}}],["промисов",{"2":{"53":1}}],["промежуточного",{"2":{"44":1}}],["пройти",{"2":{"53":1}}],["проапгрейдиться",{"2":{"52":1}}],["профессионального",{"2":{"48":1}}],["профессиональной",{"2":{"29":1}}],["прогон",{"2":{"43":1}}],["програмную",{"2":{"54":1}}],["программными",{"2":{"44":1}}],["программных",{"2":{"29":1}}],["программно",{"2":{"7":1}}],["программной",{"2":{"6":1,"7":1}}],["программного",{"2":{"5":1,"6":1,"29":1,"43":1}}],["программы",{"2":{"7":1,"10":1,"34":1,"39":1,"41":1,"44":2}}],["программировать",{"2":{"45":1}}],["программированию",{"2":{"53":2}}],["программирование",{"2":{"44":1}}],["программировании",{"2":{"7":4}}],["программирования",{"2":{"3":2,"6":2,"7":1,"44":2}}],["программиста",{"2":{"45":1}}],["программистам",{"2":{"44":1}}],["программистов",{"2":{"44":1,"75":1}}],["программистские",{"2":{"44":1}}],["программист",{"2":{"7":2,"41":1,"44":1}}],["программу",{"2":{"7":1}}],["программа",{"2":{"4":1,"7":1}}],["прогрессивность",{"2":{"7":1}}],["прогрессивного",{"2":{"6":1}}],["прогрессивные",{"2":{"29":1}}],["прогрессивным",{"2":{"27":1}}],["прогрессивный",{"0":{"7":1},"2":{"6":1,"7":2}}],["прогрессивных",{"2":{"6":1}}],["процентов",{"2":{"41":1}}],["процессор",{"2":{"25":1,"39":1}}],["процесс",{"2":{"9":1,"31":1,"43":1}}],["процесса",{"2":{"8":1,"11":1,"33":1}}],["процессе",{"2":{"7":1,"9":1}}],["прочесть",{"2":{"54":1}}],["прочих",{"2":{"54":1}}],["прочим",{"2":{"45":1}}],["прочие",{"2":{"35":1}}],["прочтение",{"2":{"29":1}}],["прозрачное",{"2":{"33":1}}],["прозрачный",{"2":{"2":1,"37":1}}],["проиграет",{"2":{"54":1}}],["проиндексировать",{"2":{"54":1}}],["происходит",{"2":{"54":1}}],["происходить",{"2":{"33":1,"42":1}}],["произошло",{"2":{"42":1}}],["производительное",{"2":{"44":1}}],["производительность",{"2":{"15":1,"29":1,"46":1}}],["производительности",{"2":{"7":2,"41":1,"42":1,"54":1}}],["производительней",{"2":{"39":1}}],["продакшне",{"2":{"43":1}}],["продуктовый",{"2":{"53":1}}],["продукт",{"2":{"31":1}}],["продукта",{"2":{"29":1}}],["продвинутые",{"2":{"29":1}}],["продвижения",{"2":{"6":1,"18":1,"26":1}}],["прошли",{"2":{"26":1}}],["проп",{"2":{"42":1}}],["пропсов",{"2":{"42":1}}],["пропсы",{"0":{"21":1},"2":{"42":1}}],["прописать",{"2":{"33":1}}],["прописано",{"2":{"16":1}}],["прописаны",{"2":{"7":1}}],["проявляется",{"2":{"43":1}}],["проявившиеся",{"2":{"11":1}}],["проясняться",{"2":{"11":1}}],["проектов",{"2":{"38":1,"44":1,"52":1}}],["проекте",{"2":{"33":1,"38":1,"42":1,"52":1,"74":1}}],["проект",{"0":{"51":1},"2":{"29":1,"33":2,"38":2,"45":1,"49":1}}],["проектирования",{"2":{"6":2,"26":1,"29":1}}],["проектах",{"2":{"25":1,"33":1,"43":1}}],["проекта",{"2":{"3":1,"9":1,"10":1,"11":1,"29":1,"31":1,"33":2,"34":1,"43":1,"45":1,"51":1,"53":1,"74":1}}],["прокси",{"2":{"4":1,"5":1,"44":1}}],["пробелы",{"2":{"21":1}}],["пробелами",{"2":{"4":1}}],["проблему",{"2":{"33":1,"35":1}}],["проблема",{"2":{"11":1}}],["проблемы",{"2":{"4":2,"6":1,"19":1,"42":1,"53":1,"54":1}}],["проблем",{"2":{"3":1,"7":1}}],["протяжении",{"2":{"9":1}}],["протоколу",{"2":{"34":1,"35":1}}],["протокола",{"2":{"29":1}}],["протоколам",{"2":{"6":1}}],["протоколы",{"0":{"5":1},"2":{"5":1,"53":1}}],["протоколом",{"2":{"4":1}}],["протестировать",{"2":{"3":1}}],["проводить",{"2":{"44":1}}],["провести",{"2":{"7":1}}],["проверено",{"2":{"54":1}}],["проверенная",{"2":{"75":1}}],["проверенных",{"2":{"74":1}}],["проверенные",{"2":{"29":1}}],["проверенное",{"2":{"7":1}}],["проверьте",{"2":{"54":1}}],["проверить",{"2":{"53":1}}],["проверив",{"2":{"2":1}}],["проверка",{"2":{"42":3}}],["проверки",{"0":{"27":1}}],["проверять",{"2":{"2":1,"43":1}}],["проверяет",{"2":{"2":2,"33":1,"39":1}}],["провайдеры",{"2":{"34":2}}],["провайдерами",{"2":{"53":1}}],["провайдера",{"2":{"3":1,"45":1}}],["провайдер",{"2":{"3":1}}],["провайдеров",{"2":{"3":1}}],["проще",{"2":{"3":1,"41":1,"52":1,"54":1}}],["прослойка",{"2":{"54":1}}],["просмотреть",{"2":{"27":1}}],["просмотра",{"2":{"11":1}}],["просишь",{"2":{"2":1}}],["пространство",{"2":{"38":1}}],["простую",{"2":{"7":1}}],["просты",{"2":{"54":1}}],["простые",{"2":{"41":1}}],["простых",{"2":{"6":2,"54":1}}],["простым",{"2":{"1":1}}],["простому",{"2":{"31":1}}],["простом",{"2":{"19":1,"44":1}}],["простое",{"2":{"9":1,"54":1}}],["простого",{"2":{"6":1}}],["просто",{"2":{"2":1,"11":1,"18":1,"34":1,"41":1,"42":2,"45":1,"52":1,"53":1}}],["простой",{"2":{"2":1,"8":1,"53":1}}],["приблизить",{"2":{"54":1}}],["придумали",{"2":{"54":1}}],["придерживаются",{"2":{"52":1}}],["придерживаться",{"2":{"7":1,"53":1}}],["придется",{"2":{"7":1}}],["пригодится",{"2":{"53":1}}],["пригодиться",{"2":{"39":1}}],["причем",{"2":{"53":2}}],["причины",{"2":{"52":1}}],["причудливо",{"2":{"7":1}}],["приятней",{"2":{"52":1}}],["приятно",{"2":{"11":1}}],["привязывайтесь",{"2":{"49":1}}],["привязана",{"2":{"42":1}}],["приветствуется",{"2":{"73":1}}],["привести",{"2":{"11":1}}],["привел",{"2":{"19":1}}],["привели",{"2":{"11":2}}],["привело",{"2":{"6":1}}],["приведенные",{"2":{"20":1}}],["приведен",{"2":{"4":1}}],["признательность",{"2":{"29":1}}],["природе",{"2":{"20":1}}],["присутствует",{"2":{"42":1}}],["присваивает",{"2":{"17":1}}],["присваивается",{"2":{"7":1,"17":1}}],["присоединении",{"2":{"17":1}}],["примитивах",{"2":{"41":1}}],["примитивов",{"2":{"41":1}}],["примитивные",{"2":{"17":1,"42":1}}],["примите",{"2":{"11":1}}],["примет",{"2":{"7":1}}],["применять",{"2":{"7":1}}],["применяется",{"2":{"2":1,"11":1}}],["применения",{"2":{"33":1}}],["применению",{"2":{"7":1}}],["применение",{"2":{"5":1}}],["примеры",{"2":{"20":1,"53":1}}],["примерами",{"2":{"19":1}}],["примерах",{"2":{"17":1}}],["примера",{"2":{"11":1}}],["примеров",{"2":{"7":1,"9":1,"11":1}}],["примере",{"2":{"7":1,"8":1,"11":1,"19":1}}],["примеру",{"2":{"7":1}}],["пример",{"2":{"1":2,"4":1,"8":1,"11":1,"16":1,"17":1,"18":1,"19":1,"33":2}}],["примерно",{"2":{"1":1,"42":1,"54":1}}],["приходила",{"2":{"54":1}}],["приходится",{"2":{"11":2,"15":1,"39":1}}],["приходя",{"2":{"45":1}}],["приходятся",{"2":{"42":1,"44":1}}],["приходящих",{"2":{"5":1}}],["принести",{"2":{"42":1}}],["принадлежат",{"2":{"42":1}}],["принято",{"2":{"9":1}}],["приняты",{"2":{"6":1}}],["принципе",{"2":{"44":1}}],["принципы",{"2":{"29":1}}],["принципов",{"2":{"26":1}}],["принцип",{"2":{"4":1}}],["принимающий",{"2":{"4":1}}],["приложению",{"2":{"10":1,"42":1,"45":1}}],["приложении",{"0":{"8":1},"1":{"9":1},"2":{"7":1,"8":1,"11":1,"35":2,"42":3,"54":1}}],["приложением",{"2":{"8":1,"54":1,"74":2}}],["приложение",{"2":{"3":2,"6":1,"7":4,"8":3,"9":2,"10":2,"35":1,"45":1,"52":1,"53":1,"54":3}}],["приложений",{"0":{"45":1},"1":{"46":1,"47":1,"48":1,"49":1,"50":1,"51":1},"2":{"2":1,"6":2,"7":5,"9":2,"54":1}}],["приложениями",{"2":{"6":1}}],["приложения",{"0":{"35":1,"38":1},"1":{"36":1,"37":1},"2":{"1":1,"5":1,"6":2,"7":6,"8":5,"9":4,"10":1,"18":1,"19":1,"29":4,"33":1,"35":2,"38":3,"41":1,"43":1,"44":1,"45":4,"46":1,"54":4,"74":1}}],["при",{"2":{"2":3,"3":1,"4":2,"5":1,"6":1,"7":6,"8":1,"9":2,"11":1,"13":2,"15":2,"17":1,"19":3,"25":1,"27":1,"33":4,"35":2,"39":2,"43":2,"44":3,"52":1,"53":1,"54":8,"74":2}}],["геттеров",{"2":{"42":1}}],["генерации",{"2":{"54":1}}],["генерация",{"2":{"38":1,"54":1}}],["генерируется",{"2":{"54":1}}],["генерировать",{"2":{"33":1}}],["генерить",{"2":{"54":1}}],["генерит",{"2":{"2":2}}],["гарагусо",{"2":{"29":1}}],["глоссарий",{"0":{"74":1}}],["глобален",{"2":{"42":1}}],["глобальный",{"2":{"42":1}}],["глобальным",{"2":{"42":2,"45":1}}],["глобальными",{"2":{"42":1}}],["глобальное",{"2":{"42":1}}],["глобальная",{"2":{"8":1}}],["глючит",{"2":{"39":1}}],["глава",{"0":{"30":1},"2":{"29":4}}],["главах",{"2":{"7":1,"29":1}}],["главу",{"2":{"27":1}}],["главным",{"2":{"45":1,"53":1}}],["главных",{"2":{"10":1}}],["главного",{"2":{"9":1}}],["главы",{"2":{"6":1,"27":1}}],["главе",{"2":{"6":1,"9":1,"10":3,"11":2,"17":1,"26":2,"29":8}}],["гибки",{"2":{"44":1}}],["гибкость",{"2":{"5":1,"7":1}}],["гибче",{"2":{"42":1}}],["гипертекста",{"2":{"6":1}}],["гуглить",{"2":{"3":2,"53":1}}],["грамотная",{"2":{"74":1}}],["границах",{"2":{"7":1}}],["гранулировано",{"2":{"2":1}}],["греется",{"2":{"39":1}}],["громоздким",{"2":{"19":1}}],["грузить",{"2":{"3":1,"54":1}}],["грубо",{"2":{"2":1,"4":1,"45":1}}],["где",{"2":{"2":1,"3":1,"7":1,"8":1,"10":1,"11":1,"34":1,"42":1,"43":1,"44":2,"48":1}}],["гостинице",{"2":{"54":1}}],["гостей",{"2":{"2":1}}],["года",{"2":{"53":1,"75":1}}],["годы",{"2":{"41":1}}],["год",{"2":{"34":1}}],["готовым",{"2":{"39":1}}],["готовы",{"2":{"19":1,"26":1,"27":1}}],["готовых",{"2":{"18":1}}],["говорит",{"2":{"45":1}}],["говорилось",{"2":{"25":1}}],["говорил",{"2":{"11":1}}],["говоря",{"2":{"2":1,"4":1,"44":1,"45":1,"54":1}}],["чуть",{"2":{"54":1}}],["чужих",{"2":{"52":1}}],["читаемая",{"2":{"53":1}}],["читаемым",{"2":{"25":1}}],["читать",{"2":{"53":1}}],["чистом",{"2":{"52":1}}],["чистый",{"2":{"49":1}}],["чистая",{"2":{"17":1}}],["число",{"2":{"45":1}}],["числа",{"2":{"8":1,"17":1}}],["чисел",{"2":{"41":1}}],["чате",{"2":{"75":1}}],["чаще",{"2":{"13":1,"18":1}}],["часто",{"2":{"7":2,"11":1,"12":1,"15":2,"19":1,"27":1,"35":1,"41":1,"54":1,"75":2}}],["частью",{"2":{"8":1,"14":1,"42":1}}],["часть",{"2":{"5":2,"7":1,"10":1,"39":1,"41":1}}],["частично",{"2":{"42":3,"44":2}}],["части",{"2":{"2":1,"53":1}}],["чтения",{"2":{"11":2}}],["чтобы",{"2":{"2":1,"8":2,"10":2,"11":4,"14":1,"18":1,"19":1,"25":2,"27":2,"33":1,"34":2,"35":1,"38":2,"42":1,"44":2,"53":2,"54":5}}],["что",{"2":{"2":8,"3":2,"4":1,"5":2,"7":14,"8":3,"9":5,"10":6,"11":12,"14":2,"15":2,"16":1,"17":1,"18":2,"19":1,"27":2,"31":1,"33":3,"35":1,"38":2,"41":1,"42":13,"43":3,"44":3,"45":4,"46":1,"52":3,"53":4,"54":4}}],["членов",{"2":{"11":1}}],["членам",{"2":{"11":1}}],["член",{"2":{"11":1}}],["чего",{"2":{"41":1,"42":1,"44":1}}],["человек",{"2":{"39":1,"53":2}}],["четко",{"2":{"10":1}}],["четкое",{"2":{"6":1}}],["четкость",{"2":{"5":1}}],["четыре",{"2":{"2":1}}],["чем",{"2":{"1":1,"7":1,"11":1,"18":1,"27":1,"34":1,"38":2,"42":1,"44":1,"49":1,"52":1}}],["через",{"2":{"1":1,"2":5,"3":1,"5":1,"29":1,"33":1,"35":1,"38":1,"39":1,"41":2,"42":1,"52":1}}],["аспекте",{"2":{"43":1,"44":1}}],["асинхронные",{"2":{"19":1}}],["алиаса",{"2":{"38":1}}],["алиасы",{"2":{"38":1}}],["алиас",{"2":{"38":2}}],["альтернативный",{"2":{"11":1}}],["альтернатива",{"2":{"3":1}}],["аудио",{"2":{"35":1}}],["аутентификацию",{"2":{"3":1}}],["аутентификацией",{"2":{"2":1}}],["аутентификации",{"2":{"2":1,"42":1,"74":2}}],["аутентификация",{"0":{"2":1},"2":{"2":5}}],["апгрейд",{"2":{"54":1}}],["апдейта",{"2":{"33":1}}],["апплеты",{"2":{"6":1}}],["аргумента",{"2":{"8":1}}],["архитектура",{"0":{"45":1},"1":{"46":1,"47":1,"48":1,"49":1,"50":1,"51":1},"2":{"45":4,"74":1}}],["архитектуры",{"2":{"29":1}}],["архитектурно",{"2":{"42":1}}],["архитектурной",{"2":{"41":1}}],["архитектурными",{"2":{"7":1}}],["архитектурная",{"2":{"7":1}}],["архитектурой",{"2":{"7":1}}],["азы",{"2":{"7":1}}],["автоматизацией",{"2":{"53":1}}],["автоматизации",{"2":{"29":1,"31":1,"33":2}}],["автоматического",{"2":{"7":1,"33":1}}],["автоматически",{"2":{"6":1,"7":1,"11":1,"33":1,"44":1}}],["автор",{"2":{"29":1}}],["авторизационный",{"2":{"2":1}}],["авторизация",{"0":{"2":1},"2":{"2":4}}],["автономного",{"2":{"8":1}}],["аналогу",{"2":{"54":1}}],["аналогов",{"2":{"44":1}}],["аналогом",{"2":{"42":1}}],["аналогичный",{"2":{"53":1}}],["аналогичные",{"2":{"42":1}}],["аналогией",{"2":{"45":1}}],["аналоги",{"2":{"42":1}}],["аналог",{"2":{"42":1}}],["анимации",{"2":{"19":3}}],["анимацию",{"2":{"6":1,"54":1}}],["английского",{"2":{"53":1}}],["английском",{"2":{"53":2}}],["англ",{"2":{"4":1}}],["актуальность",{"2":{"75":1}}],["актуален",{"2":{"11":1}}],["активно",{"2":{"44":1}}],["аккуратней",{"2":{"43":1}}],["аккаунта",{"2":{"45":1}}],["аккаунт",{"2":{"2":1}}],["аккаунтом",{"2":{"2":1}}],["академических",{"2":{"6":1}}],["абы",{"2":{"5":1}}],["абсолютно",{"2":{"53":1}}],["абсолютном",{"2":{"3":1}}],["абстрактны",{"2":{"26":1}}],["абстрактное",{"2":{"25":1}}],["абстракция",{"0":{"0":1},"1":{"1":1}}],["абстрагирование",{"2":{"1":1}}],["адаптивноcти",{"2":{"49":1}}],["адаптивность",{"2":{"45":1,"52":1}}],["адрес",{"2":{"13":1}}],["адресу",{"2":{"4":1}}],["админ",{"2":{"2":1}}],["админке",{"2":{"2":1}}],["аттрибутах",{"2":{"52":1}}],["аттрибут",{"2":{"8":1}}],["атрибута",{"2":{"13":1,"14":1,"16":1}}],["атрибуту",{"2":{"11":1}}],["атрибуты",{"2":{"11":1,"12":1}}],["атрибут",{"2":{"7":2,"10":3,"11":1,"13":1,"16":2}}],["ат",{"2":{"2":2}}],["а",{"2":{"2":2,"3":1,"4":2,"7":4,"8":1,"9":1,"10":1,"11":4,"18":1,"19":1,"21":1,"41":2,"42":5,"44":1,"45":1,"47":1,"53":4,"54":5}}],["мнение",{"2":{"75":1}}],["множественного",{"2":{"41":1}}],["множество",{"2":{"39":2,"44":1,"54":1}}],["многие",{"2":{"34":1,"39":1,"45":1,"53":1}}],["многих",{"2":{"25":1}}],["многолетним",{"2":{"54":1}}],["многопоточной",{"2":{"44":1}}],["многопоточность",{"2":{"29":1}}],["многословность",{"2":{"11":1}}],["многословной",{"2":{"11":1}}],["многословен",{"2":{"11":1}}],["многом",{"2":{"8":1}}],["многое",{"2":{"7":1}}],["многократно",{"2":{"7":1,"9":1}}],["много",{"2":{"2":1,"3":1,"4":1,"35":1,"39":1,"40":1,"41":1,"44":1}}],["мучается",{"2":{"49":1}}],["мусор",{"2":{"19":1}}],["миру",{"2":{"54":1}}],["мир",{"2":{"52":1}}],["мире",{"2":{"9":1}}],["мидл",{"2":{"45":1}}],["микрософт",{"2":{"54":1}}],["микросервисов",{"2":{"45":1}}],["микросервиса",{"2":{"44":1}}],["микро",{"2":{"39":1}}],["миксинов",{"2":{"11":1}}],["миксины",{"2":{"11":2,"41":4}}],["миграция",{"2":{"11":1}}],["миграции",{"2":{"11":1}}],["минут",{"2":{"53":1}}],["минусы",{"2":{"52":2}}],["минуя",{"2":{"7":1}}],["минисервере",{"2":{"39":1}}],["мини",{"2":{"39":2}}],["минимум",{"2":{"39":1,"42":1,"51":1,"53":2}}],["миниатюре",{"2":{"3":1}}],["мыслить",{"2":{"45":1}}],["мышку",{"2":{"39":1}}],["мыши",{"2":{"18":1}}],["мышления",{"2":{"7":1}}],["мы",{"2":{"6":3,"7":2,"8":11,"9":4,"10":13,"11":14,"12":1,"13":1,"17":3,"18":8,"19":3,"20":1,"25":1,"26":3,"29":5,"33":2,"45":5}}],["мае",{"2":{"53":1}}],["максимально",{"2":{"52":1,"54":1}}],["манифест",{"2":{"54":3}}],["манипулирования",{"2":{"6":1,"15":1}}],["манипуляции",{"2":{"2":1}}],["манере",{"2":{"25":1}}],["магические",{"2":{"41":1}}],["магия",{"2":{"17":1}}],["магию",{"2":{"10":1}}],["магазине",{"2":{"54":1}}],["магазина",{"2":{"45":1}}],["магазин",{"2":{"2":1}}],["маске",{"2":{"36":1}}],["маска",{"2":{"4":2}}],["массива",{"2":{"41":3,"44":1,"53":1}}],["массив",{"2":{"41":3,"44":1}}],["массивы",{"2":{"17":1}}],["массиве",{"2":{"16":1}}],["масштабируемых",{"2":{"44":1}}],["масштабирования",{"2":{"7":1}}],["масштабах",{"2":{"15":1}}],["маленького",{"2":{"35":1}}],["маленьких",{"2":{"9":1}}],["маленький",{"2":{"2":1}}],["малого",{"2":{"7":2}}],["машины",{"2":{"39":1}}],["машин",{"2":{"6":1}}],["метрике",{"2":{"54":1}}],["метрики",{"2":{"54":1}}],["метода",{"2":{"54":1}}],["методами",{"2":{"53":1}}],["методам",{"2":{"11":1}}],["методом",{"2":{"54":1}}],["методов",{"2":{"41":1}}],["методе",{"2":{"11":1}}],["методы",{"0":{"24":1},"2":{"4":1,"6":1,"8":1,"9":1,"42":1}}],["метод",{"2":{"2":1,"8":3,"11":1}}],["медленней",{"2":{"42":1}}],["мелких",{"2":{"42":1}}],["механизмы",{"2":{"42":1}}],["мест",{"2":{"54":1}}],["места",{"2":{"41":1}}],["месте",{"2":{"10":1,"44":1}}],["место",{"2":{"6":1,"19":1,"44":1}}],["мере",{"2":{"6":2,"9":1,"11":2,"18":1,"26":1}}],["меры",{"2":{"2":1}}],["между",{"2":{"4":1,"6":3,"7":3,"10":1,"11":2,"27":1,"39":1,"42":2,"53":1,"54":1}}],["менее",{"2":{"54":1}}],["менеджера",{"2":{"33":1}}],["менеджер",{"2":{"2":3}}],["ментор",{"2":{"53":2}}],["меню",{"2":{"45":1}}],["меньше",{"2":{"44":1}}],["меньший",{"2":{"11":1,"44":1}}],["меняем",{"2":{"45":1}}],["меняете",{"2":{"42":1}}],["меняет",{"2":{"11":1}}],["меняется",{"2":{"1":1}}],["меняться",{"2":{"41":1}}],["менять",{"2":{"35":1}}],["меняющими",{"2":{"15":1}}],["меняются",{"2":{"16":1,"41":1}}],["меняют",{"2":{"7":1}}],["мобильное",{"2":{"54":1}}],["морган",{"2":{"53":1}}],["мощь",{"2":{"45":1}}],["мощная",{"2":{"7":1}}],["мощных",{"2":{"6":1}}],["мощности",{"2":{"6":1}}],["монитора",{"2":{"39":1}}],["монитор",{"2":{"39":1}}],["мониторингом",{"2":{"2":1}}],["моем",{"2":{"38":1}}],["моменты",{"2":{"53":1,"75":1}}],["моментов",{"2":{"43":1}}],["момент",{"2":{"19":1,"41":1,"54":1}}],["могущие",{"2":{"75":1}}],["могут",{"2":{"4":2,"6":1,"7":2,"11":1,"15":1,"19":1,"35":1,"39":1,"44":2,"45":1,"46":1,"53":1}}],["мог",{"2":{"10":1,"54":1}}],["модули",{"2":{"42":2,"45":2,"48":1}}],["модуля",{"2":{"42":1}}],["модуле",{"2":{"42":1,"44":1,"45":1}}],["модульная",{"2":{"45":1}}],["модульными",{"2":{"7":1}}],["модуль",{"2":{"1":2,"10":1,"45":7}}],["модификации",{"2":{"14":1}}],["модификатор",{"2":{"10":1}}],["моделям",{"2":{"49":1}}],["моделей",{"2":{"25":1}}],["модели",{"2":{"7":1}}],["модель",{"2":{"7":2,"42":2,"44":1,"52":1}}],["мои",{"2":{"5":1}}],["можем",{"2":{"8":1,"10":5,"11":3,"12":1,"17":1,"18":2,"19":1}}],["можете",{"2":{"7":5,"9":1,"11":2,"20":1,"25":2,"27":2,"35":1,"73":1}}],["может",{"2":{"2":1,"3":2,"4":1,"5":1,"6":1,"7":4,"9":1,"10":3,"11":3,"14":1,"19":2,"33":1,"35":1,"38":1,"39":1,"41":1,"42":6,"43":1,"44":3,"46":1,"52":3,"53":1,"54":6}}],["можно",{"2":{"1":1,"2":4,"3":2,"5":1,"7":2,"8":1,"9":3,"18":1,"19":3,"25":1,"34":3,"35":1,"39":2,"41":1,"42":3,"44":3,"45":2,"52":1,"53":4,"54":3}}],["н",{"2":{"53":1}}],["нём",{"2":{"49":1}}],["нужен",{"2":{"33":1,"38":1,"42":2,"53":2,"54":1}}],["нужный",{"2":{"43":1}}],["нужны",{"2":{"41":1,"45":1,"54":1}}],["нужных",{"2":{"41":1}}],["нужные",{"2":{"3":1}}],["нужна",{"2":{"5":1,"7":1,"37":1,"41":1,"46":1}}],["нужное",{"2":{"33":1}}],["нужно",{"2":{"2":2,"7":1,"8":1,"9":1,"11":2,"15":1,"19":1,"33":1,"35":2,"38":2,"41":1,"42":2,"43":2,"45":1,"52":1,"53":1,"54":2}}],["нуля",{"2":{"7":1}}],["нюансов",{"2":{"4":1}}],["ним",{"2":{"49":1,"53":1,"54":1}}],["ними",{"2":{"2":1,"7":2,"10":1}}],["нижнем",{"2":{"21":1}}],["ниже",{"2":{"4":1,"73":1}}],["ни",{"2":{"11":1}}],["ничего",{"2":{"9":1,"11":1,"53":1}}],["них",{"2":{"6":1,"7":1,"11":2,"12":1,"19":1,"38":1,"41":1,"43":1,"45":1,"47":1}}],["никакой",{"2":{"42":1,"54":1}}],["никаких",{"2":{"5":1}}],["никогда",{"2":{"5":1,"53":1}}],["нормально",{"2":{"54":1}}],["номер",{"2":{"54":1}}],["ноут",{"2":{"39":1}}],["нотацию",{"2":{"12":1}}],["новая",{"2":{"54":1}}],["новую",{"2":{"46":1}}],["нововведением",{"2":{"42":1}}],["новостей",{"2":{"42":1}}],["новостных",{"2":{"42":1}}],["новой",{"2":{"33":1,"52":1}}],["нового",{"2":{"11":1,"44":1,"73":1}}],["новое",{"0":{"59":1,"62":1,"65":1},"2":{"7":1,"33":1}}],["новых",{"2":{"33":1}}],["новым",{"2":{"11":1}}],["новый",{"2":{"10":1,"11":1,"19":2,"38":1,"46":1}}],["новые",{"2":{"6":3,"39":1,"44":1,"53":1}}],["новичка",{"2":{"5":1}}],["но",{"2":{"2":3,"3":3,"5":1,"6":1,"7":6,"8":1,"9":1,"10":3,"11":9,"14":1,"15":1,"17":1,"18":1,"19":2,"20":1,"25":1,"31":1,"33":1,"35":1,"39":1,"41":2,"42":2,"43":1,"44":5,"45":2,"46":2,"53":4,"54":4}}],["неочевидные",{"2":{"75":1}}],["неоптимизированных",{"2":{"54":1}}],["необходимую",{"2":{"54":1}}],["необходимый",{"2":{"53":1}}],["необходимые",{"2":{"39":1}}],["необходимых",{"2":{"29":1}}],["необходим",{"2":{"34":1}}],["необходимости",{"2":{"7":2,"11":1,"33":1,"35":1}}],["необходимо",{"2":{"6":1,"7":3,"11":3,"19":1}}],["некий",{"2":{"54":1}}],["некоего",{"2":{"42":1}}],["некотором",{"2":{"42":1}}],["некоторое",{"2":{"11":2}}],["некоторых",{"2":{"19":1}}],["некоторые",{"2":{"6":1,"7":3,"11":2,"54":1}}],["некоторую",{"2":{"3":1}}],["некой",{"2":{"2":1}}],["неэффективным",{"2":{"54":1}}],["нельзя",{"2":{"44":1}}],["нелогично",{"2":{"42":1}}],["ненужной",{"2":{"42":1}}],["ненужное",{"2":{"5":1}}],["нечто",{"2":{"42":1}}],["независимо",{"2":{"45":1}}],["независимы",{"2":{"42":1}}],["незаслужено",{"2":{"2":1}}],["неудачное",{"2":{"42":1}}],["неудобно",{"2":{"35":1}}],["недорого",{"2":{"34":1}}],["недостатки",{"2":{"11":1}}],["нее",{"2":{"11":1,"42":1,"44":1}}],["неизменяемое",{"2":{"11":1}}],["нереактивные",{"2":{"11":1}}],["неплохо",{"2":{"53":1}}],["неплохой",{"2":{"45":1}}],["неплохим",{"2":{"3":1}}],["непрямой",{"2":{"42":1}}],["непрерывная",{"2":{"31":1}}],["неправильном",{"2":{"15":1}}],["непустое",{"2":{"14":1}}],["непосредственно",{"2":{"9":1,"41":1}}],["небольшую",{"2":{"54":1}}],["небольших",{"2":{"11":1,"52":1}}],["небольшим",{"2":{"7":1}}],["небольшой",{"2":{"40":1,"54":1}}],["небольшое",{"2":{"8":1,"19":1}}],["небольшого",{"2":{"2":1,"3":1,"8":1}}],["несущественные",{"2":{"60":1}}],["несложных",{"2":{"54":1}}],["несложно",{"2":{"2":1}}],["несмотря",{"2":{"53":1}}],["нестандартные",{"2":{"53":1}}],["нескольких",{"2":{"11":1,"38":1,"42":1,"43":1,"44":1}}],["нескольким",{"2":{"4":1}}],["несколько",{"2":{"7":1,"8":1,"9":3,"11":1,"18":2,"19":1,"33":1,"42":2,"45":1,"54":1}}],["несовместимости",{"2":{"6":2}}],["него",{"2":{"4":1,"19":1,"37":1,"39":1,"42":2}}],["ней",{"2":{"3":2,"41":1,"42":1,"46":1,"54":1}}],["немножко",{"2":{"54":1}}],["немного",{"2":{"8":1,"26":1,"44":1,"46":1,"52":1}}],["нем",{"2":{"2":2,"4":1,"6":1,"7":1,"33":2,"34":1,"53":1}}],["нему",{"2":{"2":1,"4":1,"39":1,"42":1}}],["нетривиальная",{"2":{"39":1}}],["нет",{"2":{"2":2,"11":2,"14":1,"27":1,"53":2}}],["неё",{"2":{"2":1}}],["не",{"0":{"5":1,"30":1},"2":{"1":1,"2":4,"3":4,"4":3,"5":2,"6":2,"7":3,"8":1,"9":2,"10":2,"11":9,"13":1,"14":1,"15":1,"16":1,"18":2,"19":4,"20":1,"25":2,"31":1,"33":1,"35":1,"37":1,"39":7,"41":6,"42":9,"43":1,"44":6,"45":3,"46":5,"47":1,"49":2,"52":1,"53":5,"54":10,"75":1}}],["налету",{"2":{"54":1}}],["наличия",{"2":{"44":1}}],["наличие",{"2":{"43":1}}],["нагружает",{"2":{"54":1}}],["натянуть",{"2":{"45":1}}],["нативных",{"2":{"54":1}}],["нативным",{"2":{"54":1}}],["нативными",{"2":{"6":1}}],["нативного",{"2":{"44":1,"54":1}}],["наименьшими",{"2":{"45":1}}],["наиболее",{"2":{"6":1,"11":1,"12":1,"27":1,"38":1,"45":1,"75":1}}],["наверное",{"2":{"44":1,"54":1}}],["навигацией",{"2":{"29":1}}],["наряду",{"2":{"43":1}}],["наращивать",{"2":{"6":1}}],["находятся",{"2":{"53":1}}],["находят",{"2":{"42":1}}],["находится",{"2":{"19":1,"42":1}}],["набирают",{"2":{"25":1}}],["набираются",{"2":{"22":1}}],["наборы",{"2":{"7":1,"9":1}}],["набор",{"2":{"6":1,"20":1,"34":1}}],["нажмет",{"2":{"19":1}}],["найти",{"2":{"18":1,"19":1}}],["наоборот",{"2":{"11":1}}],["надёжней",{"2":{"39":1}}],["надо",{"2":{"33":1,"34":1,"42":2,"44":3,"45":3,"53":2}}],["надежных",{"2":{"44":1}}],["надежный",{"2":{"2":1}}],["надежное",{"2":{"33":1}}],["над",{"0":{"47":1},"2":{"11":2,"44":1,"54":1,"74":1}}],["называть",{"2":{"42":2}}],["называет",{"2":{"45":1}}],["называется",{"2":{"8":1,"17":1,"41":1,"42":1}}],["называемые",{"2":{"12":1,"42":1}}],["называемый",{"2":{"11":1}}],["называемой",{"2":{"10":1}}],["названный",{"2":{"11":1}}],["названиемстор",{"2":{"42":1}}],["название",{"2":{"11":1,"53":1}}],["наших",{"2":{"9":1}}],["наши",{"2":{"9":2,"10":1,"11":2}}],["нашим",{"2":{"8":1}}],["наш",{"2":{"9":1,"10":1,"11":2,"33":1}}],["нашем",{"2":{"11":2,"18":1}}],["наше",{"2":{"8":3}}],["нашего",{"2":{"8":1,"9":2,"10":5,"11":1,"29":3}}],["намного",{"2":{"39":1,"42":1,"44":2,"47":1,"52":2,"53":1,"54":3}}],["нам",{"2":{"6":1,"7":1,"8":1,"9":2,"11":3,"18":1,"19":2,"29":1}}],["наконец",{"2":{"6":2,"8":1}}],["научных",{"2":{"6":1}}],["начнем",{"2":{"20":1}}],["начнется",{"2":{"9":1}}],["начинаниях",{"2":{"29":1}}],["начинается",{"2":{"23":1}}],["начинающему",{"2":{"53":1}}],["начинающих",{"2":{"39":1,"75":1}}],["начинающуюся",{"2":{"12":1}}],["начинаются",{"2":{"22":2}}],["начиная",{"2":{"10":1,"29":1}}],["начинаться",{"2":{"22":1}}],["начинать",{"2":{"5":1,"7":1}}],["начальный",{"2":{"65":1}}],["начального",{"2":{"53":1}}],["начальное",{"2":{"15":1}}],["началом",{"2":{"53":1}}],["начала",{"2":{"20":1,"54":1}}],["начале",{"2":{"8":1}}],["начать",{"2":{"3":1,"7":1,"29":1}}],["напишем",{"2":{"18":1}}],["написанным",{"2":{"43":1}}],["написанный",{"2":{"3":1,"7":1}}],["написание",{"2":{"43":1}}],["написании",{"2":{"25":1,"53":1,"54":1}}],["написания",{"2":{"3":1,"6":1,"10":3,"19":1,"29":1}}],["написаны",{"2":{"9":1}}],["написано",{"2":{"7":1}}],["написать",{"2":{"3":2,"53":1,"54":1}}],["напрямую",{"2":{"8":1,"11":1,"38":1,"41":1,"46":1,"47":1,"54":1}}],["направляется",{"2":{"2":1}}],["направляет",{"2":{"2":1}}],["например",{"2":{"2":5,"3":6,"4":1,"7":3,"11":4,"13":1,"14":1,"16":1,"18":1,"19":1,"21":1,"22":4,"23":1,"24":1,"25":1,"31":2,"35":1,"39":2,"42":5,"44":4,"45":2,"46":1,"47":1,"50":1,"54":2}}],["наследованием",{"2":{"45":2}}],["наследования",{"2":{"41":1}}],["насколько",{"2":{"7":1}}],["настройте",{"2":{"53":1}}],["настройку",{"2":{"39":1}}],["настройка",{"0":{"39":1},"2":{"38":2,"39":1}}],["настройки",{"2":{"38":1}}],["настроек",{"2":{"39":2}}],["настроен",{"2":{"33":1}}],["настроить",{"2":{"38":2,"39":1}}],["настраиваемой",{"2":{"10":1}}],["настраивается",{"2":{"4":1}}],["настолько",{"2":{"7":1,"54":1}}],["настольными",{"2":{"6":1}}],["нас",{"2":{"2":1,"10":1,"11":2,"25":1,"33":1,"45":1}}],["на",{"2":{"1":4,"2":14,"3":8,"4":5,"5":11,"6":3,"7":10,"8":8,"9":2,"10":3,"11":8,"12":1,"15":1,"16":4,"18":3,"19":6,"22":3,"25":1,"27":1,"31":2,"33":12,"34":4,"35":2,"38":3,"39":5,"41":6,"42":9,"43":8,"44":11,"45":9,"46":1,"47":2,"49":3,"52":5,"53":19,"54":16,"59":1,"60":1,"74":1}}],["rip",{"2":{"42":1}}],["rspack",{"2":{"39":24}}],["rc",{"2":{"39":2}}],["rush",{"2":{"39":2}}],["rust",{"2":{"39":2}}],["rustfmt",{"2":{"39":4}}],["ruby",{"2":{"39":2}}],["ru",{"2":{"39":6,"53":1,"75":2}}],["rules",{"2":{"39":4}}],["run",{"2":{"33":18}}],["runs",{"2":{"33":4}}],["raw",{"2":{"35":4,"37":2,"38":2}}],["routes",{"2":{"45":1}}],["rollup",{"2":{"38":2,"39":4}}],["role",{"2":{"2":1}}],["root",{"2":{"33":2,"37":2}}],["r",{"2":{"33":4,"75":2}}],["rf",{"2":{"33":8}}],["rm",{"2":{"33":6}}],["rbac",{"2":{"2":1}}],["rtl",{"2":{"41":1}}],["rt",{"2":{"2":4,"74":1}}],["rpc",{"2":{"1":1,"5":8,"53":1}}],["reddit",{"2":{"75":1}}],["redis",{"2":{"42":1}}],["rehydration",{"2":{"54":1}}],["register",{"2":{"42":1}}],["remix",{"2":{"39":4}}],["removed",{"2":{"33":2}}],["removed=`ls",{"2":{"33":2}}],["remove",{"2":{"33":4}}],["remote",{"2":{"33":14,"39":9}}],["read",{"2":{"42":1}}],["readme",{"2":{"39":4}}],["reactivity",{"2":{"42":1,"44":2}}],["reactive",{"2":{"41":7,"42":6,"44":2}}],["react",{"2":{"7":1,"44":7,"53":2}}],["renovate",{"2":{"39":4}}],["rendering",{"2":{"54":1}}],["renderwhitespace",{"2":{"39":2}}],["render",{"2":{"34":1}}],["release",{"2":{"39":8}}],["releaserc",{"2":{"39":4}}],["reload",{"2":{"33":2}}],["repo",{"2":{"39":2}}],["representation",{"2":{"35":2}}],["recentchange",{"2":{"39":2}}],["recursive",{"2":{"33":2}}],["required",{"2":{"33":2}}],["request",{"2":{"1":2}}],["ref",{"2":{"11":11,"19":4,"41":8,"42":6,"44":2}}],["refresh",{"2":{"2":1,"74":1}}],["resx",{"2":{"39":4}}],["resolver",{"2":{"38":1,"39":2}}],["resolve",{"2":{"38":4}}],["resource",{"2":{"4":1,"35":4}}],["response",{"2":{"33":4}}],["rest",{"0":{"5":2},"2":{"1":1,"5":2}}],["return",{"2":{"1":2,"8":2,"11":4,"36":4,"37":4}}],["люксовый",{"2":{"54":1}}],["любая",{"2":{"42":1,"52":1}}],["любым",{"2":{"33":1}}],["любого",{"2":{"4":1,"73":1}}],["любой",{"2":{"4":1,"7":1,"9":1,"35":1,"42":1,"52":1}}],["любое",{"2":{"2":1}}],["любом",{"2":{"2":1,"42":1,"49":1,"54":1}}],["любимую",{"2":{"1":1}}],["лэйаут",{"2":{"52":1}}],["лучшее",{"2":{"39":1}}],["лучше",{"2":{"11":1,"19":1,"37":1,"39":1,"44":1,"49":1,"53":2,"54":1}}],["лучшего",{"2":{"8":1}}],["лучшими",{"2":{"53":1}}],["лучших",{"2":{"53":1,"74":1}}],["лучший",{"0":{"9":1}}],["лучшие",{"2":{"2":1,"6":1,"53":1}}],["ландшафте",{"2":{"6":1}}],["лазить",{"2":{"2":1}}],["локали",{"2":{"41":1}}],["локализации",{"2":{"41":3}}],["локалей",{"2":{"41":1}}],["локальным",{"2":{"45":1}}],["локальный",{"2":{"42":1}}],["локальных",{"2":{"39":1,"42":1}}],["локально",{"2":{"6":1,"54":1}}],["логическому",{"2":{"54":1}}],["логически",{"2":{"48":1}}],["логические",{"2":{"45":1}}],["логично",{"2":{"42":1}}],["логичный",{"2":{"41":1}}],["логики",{"2":{"42":3}}],["логикой",{"2":{"19":1}}],["логика",{"2":{"3":1,"42":4,"44":1}}],["логику",{"2":{"3":2,"11":1,"42":2,"44":3,"52":2}}],["логине",{"2":{"2":1}}],["логина",{"2":{"2":1,"43":1}}],["логинится",{"2":{"2":1}}],["логин",{"2":{"2":4}}],["лепту",{"0":{"73":1}}],["лень",{"2":{"54":1}}],["лечь",{"2":{"54":1}}],["легче",{"2":{"53":1}}],["легкий",{"2":{"53":1}}],["легкая",{"2":{"7":1}}],["легкой",{"2":{"11":1,"44":1}}],["легко",{"2":{"1":1,"7":1,"53":1}}],["лежащего",{"2":{"31":1}}],["лежит",{"2":{"3":1}}],["лексику",{"2":{"29":1}}],["личного",{"2":{"45":1}}],["личный",{"2":{"2":1}}],["линтингом",{"2":{"43":1}}],["линтер",{"2":{"39":1}}],["линкер",{"2":{"25":1}}],["либо",{"2":{"3":1,"35":3,"38":1,"46":1,"52":2,"53":1,"54":1}}],["лишь",{"2":{"2":1,"6":1,"9":1}}],["лишние",{"2":{"2":1}}],["ли",{"2":{"2":3,"3":1,"42":1,"43":1,"53":4,"54":1}}],["python",{"2":{"53":1,"54":1}}],["pyproject",{"2":{"39":4}}],["pyrightconfig",{"2":{"39":4}}],["pinia",{"2":{"42":12,"60":1}}],["pipelines",{"2":{"39":4}}],["picture",{"2":{"13":4}}],["psalm",{"2":{"39":2}}],["pm2",{"2":{"39":8}}],["pm",{"2":{"39":2}}],["playground",{"2":{"39":1}}],["playwright",{"2":{"39":20}}],["placeholder",{"2":{"3":1}}],["please",{"2":{"39":2}}],["plugin",{"2":{"38":2,"39":1,"54":2}}],["plugins",{"2":{"38":2}}],["px`",{"2":{"36":8}}],["pnp",{"2":{"39":4}}],["pnpm",{"2":{"33":22,"38":2,"39":12}}],["png`",{"2":{"35":2}}],["png",{"2":{"35":5,"37":4}}],["pdm",{"2":{"39":4}}],["pdf",{"2":{"35":1,"39":2}}],["pdgaraguso",{"2":{"29":1}}],["p",{"2":{"33":2}}],["pwd",{"2":{"33":2}}],["pwa",{"0":{"54":1},"2":{"6":1,"54":12,"74":1}}],["persistentsessionreviveprocess",{"2":{"39":2}}],["person",{"2":{"21":1,"23":1}}],["pereditorgroup",{"2":{"39":2}}],["permissions",{"2":{"33":2}}],["permission",{"2":{"2":1}}],["pr",{"2":{"73":1}}],["prerenderer",{"2":{"54":1}}],["preferredtagnamecase",{"2":{"39":2}}],["preview",{"2":{"39":2}}],["prettier",{"2":{"39":27}}],["price",{"2":{"54":1}}],["primevue",{"2":{"40":1}}],["private",{"2":{"33":10}}],["printwidth",{"2":{"39":2}}],["printf",{"2":{"33":2}}],["print",{"2":{"18":4}}],["printpage",{"2":{"18":5}}],["practices",{"0":{"29":1},"2":{"53":1}}],["problem",{"2":{"54":1}}],["progressive",{"2":{"54":1}}],["provide",{"2":{"42":2}}],["procfile",{"2":{"39":4}}],["processqueue",{"2":{"24":1}}],["proj",{"2":{"39":4}}],["project",{"2":{"33":10,"39":2}}],["projectservice",{"2":{"25":1}}],["projectservice=new",{"2":{"25":1}}],["production",{"2":{"38":1}}],["products",{"2":{"1":6}}],["prod",{"2":{"33":7}}],["profile",{"2":{"13":4}}],["props",{"2":{"11":1,"36":22}}],["proxy",{"2":{"4":1,"41":2,"44":1}}],["pullapprove",{"2":{"39":4}}],["puppeteer",{"2":{"39":20}}],["pubspec",{"2":{"39":6}}],["pubxml",{"2":{"39":4}}],["public",{"2":{"3":1,"35":4}}],["pugtools",{"2":{"39":2}}],["push",{"2":{"31":1,"33":5,"44":2}}],["purple",{"2":{"10":2}}],["pure",{"2":{"10":2}}],["pascal",{"2":{"39":2}}],["pascalcase",{"2":{"23":1}}],["packages",{"2":{"39":2}}],["package",{"2":{"38":2,"39":13}}],["paths",{"2":{"38":2}}],["path",{"2":{"36":2,"38":6}}],["patterns",{"0":{"29":1},"2":{"39":2,"53":1}}],["pablo",{"2":{"29":1}}],["pagespeed",{"2":{"54":2}}],["pages",{"2":{"31":1,"33":13,"34":3,"53":1}}],["page",{"2":{"4":1,"54":1}}],["params",{"2":{"1":4}}],["postcss",{"2":{"39":20}}],["postcssrc",{"2":{"39":20}}],["postman",{"2":{"4":1,"39":1}}],["postgresql",{"2":{"3":1}}],["policy",{"2":{"2":1}}],["phpcs",{"2":{"39":4}}],["phpunit",{"2":{"39":2}}],["php",{"2":{"3":1,"39":4,"53":1,"54":2}}],["photo",{"2":{"2":1}}],["pba",{"2":{"2":1}}],["e2e",{"2":{"43":5}}],["eex",{"2":{"39":2}}],["event",{"2":{"39":2}}],["everybody",{"2":{"42":1}}],["every",{"2":{"1":2}}],["emmet",{"2":{"39":4}}],["emits",{"2":{"11":1}}],["eol",{"2":{"39":2}}],["es6",{"2":{"41":1,"44":1}}],["esbenp",{"2":{"39":8}}],["esbuild",{"2":{"38":1}}],["eslint",{"2":{"38":3,"39":29,"53":1}}],["esnext",{"2":{"38":2}}],["end",{"2":{"43":2}}],["entity",{"2":{"42":2}}],["entire",{"2":{"37":2}}],["engine",{"2":{"41":1}}],["en",{"2":{"39":6}}],["enablesmartcommit",{"2":{"39":2}}],["enable",{"2":{"39":6}}],["enabled",{"2":{"39":18}}],["envrc",{"2":{"39":24}}],["envs",{"2":{"33":4}}],["environments",{"2":{"34":1}}],["environment",{"2":{"33":2}}],["env",{"2":{"1":2,"33":48,"39":76}}],["eager",{"2":{"37":4}}],["easingthemes",{"2":{"33":3}}],["e88a22df",{"2":{"35":1}}],["echo",{"2":{"33":16}}],["exs",{"2":{"39":10}}],["extractor",{"2":{"39":22}}],["extension",{"2":{"39":2}}],["extensions",{"2":{"39":6}}],["ex",{"2":{"39":2}}],["experience",{"2":{"74":2}}],["express",{"2":{"54":1}}],["expand",{"2":{"39":2}}],["expandmode",{"2":{"39":2}}],["explorer",{"2":{"39":12}}],["exports",{"2":{"37":2}}],["export",{"2":{"1":4,"11":4,"37":2,"38":2,"42":2}}],["example",{"2":{"37":4}}],["exclude",{"2":{"33":2,"39":2}}],["exiting",{"2":{"33":2}}],["error",{"2":{"33":2}}],["elements",{"2":{"19":1}}],["else",{"0":{"15":2},"2":{"36":2}}],["editorconfig",{"2":{"39":4}}],["editortab",{"2":{"39":2}}],["editorgroup",{"2":{"39":2}}],["editor",{"2":{"39":58}}],["edit",{"2":{"19":3,"73":1}}],["edititem",{"2":{"19":7}}],["edge",{"2":{"3":2}}],["two",{"2":{"54":1}}],["turbo",{"2":{"39":4}}],["txt",{"2":{"39":2}}],["tip",{"2":{"44":1}}],["tidy",{"2":{"39":2}}],["titlebarstyle",{"2":{"39":2}}],["tmp",{"2":{"39":2}}],["t",{"2":{"38":5,"42":2}}],["tazerc",{"2":{"39":4}}],["tabs",{"2":{"39":2}}],["tabsize",{"2":{"39":2}}],["tailwind",{"2":{"39":20,"52":2}}],["tail",{"2":{"33":2}}],["target",{"2":{"33":30,"38":2}}],["tasks",{"2":{"39":4}}],["task",{"2":{"23":1}}],["that",{"2":{"42":4}}],["there",{"2":{"42":1}}],["the",{"2":{"33":4,"35":4,"37":2,"39":2,"54":1}}],["then",{"2":{"33":8}}],["throw",{"2":{"33":2}}],["this",{"2":{"10":2,"11":6,"39":6}}],["travis",{"2":{"39":4}}],["translate",{"2":{"53":1}}],["transform",{"2":{"44":1}}],["transformer",{"2":{"39":2}}],["transfer",{"2":{"33":2}}],["transitiongroup",{"2":{"19":1}}],["transition",{"2":{"19":1}}],["triggerexpansionontab",{"2":{"39":2}}],["tree",{"2":{"37":2,"39":6,"42":2,"46":1}}],["trevis",{"2":{"31":1}}],["true",{"2":{"1":2,"14":2,"33":2,"37":4,"39":122}}],["terserrc",{"2":{"39":20}}],["terminal",{"2":{"39":10}}],["tex",{"2":{"39":2}}],["textlint",{"2":{"39":4}}],["text",{"2":{"17":2}}],["textarea",{"2":{"17":1}}],["test",{"2":{"39":2,"43":1}}],["teleport",{"2":{"19":1}}],["template",{"2":{"10":5,"19":4,"36":4,"52":4}}],["tsup",{"2":{"39":4}}],["tslint",{"2":{"39":4}}],["tsdoc",{"2":{"39":22}}],["tsdk",{"2":{"39":2}}],["tsx",{"2":{"39":6}}],["tsconfig",{"2":{"38":3,"39":22}}],["tsc",{"2":{"38":1}}],["ts",{"2":{"10":1,"39":66}}],["typedoc",{"2":{"39":4}}],["types",{"2":{"38":2,"71":1}}],["typescript",{"0":{"71":1},"2":{"5":1,"10":1,"38":3,"39":10,"42":1,"71":4}}],["type",{"2":{"33":2,"36":14}}],["type=",{"2":{"17":2}}],["typicode",{"2":{"3":1}}],["tool",{"2":{"39":6}}],["toolchain",{"2":{"39":2}}],["toml",{"2":{"39":20}}],["toc",{"2":{"39":2}}],["total",{"2":{"21":1,"22":1}}],["token",{"2":{"1":2,"2":5,"74":2}}],["to",{"0":{"5":1},"2":{"1":2,"33":4,"35":2,"39":4,"42":3,"43":1}}],["v1",{"0":{"56":1,"58":1,"61":1,"64":1},"1":{"57":1,"59":1,"60":1,"62":1,"63":1,"65":1}}],["vetur",{"2":{"39":4}}],["vercel",{"2":{"34":1,"39":4}}],["versionrc",{"2":{"39":4}}],["versions",{"2":{"39":6}}],["version",{"2":{"33":10,"39":6}}],["vbproj",{"2":{"39":2}}],["vb",{"2":{"39":12}}],["volar",{"2":{"39":7}}],["vs",{"2":{"39":7,"44":1}}],["vscode",{"2":{"33":2,"39":17}}],["v4значительно",{"2":{"33":1}}],["v4",{"2":{"33":6}}],["v2",{"2":{"33":5}}],["v3",{"2":{"33":7}}],["views",{"2":{"45":1}}],["view",{"2":{"42":2,"44":1}}],["viewitem",{"2":{"19":6}}],["visible",{"2":{"39":2}}],["visuals",{"2":{"39":2}}],["visualizer",{"2":{"38":7}}],["vitest",{"2":{"39":20,"43":1}}],["vitepnpm",{"2":{"38":1}}],["vitepress",{"2":{"33":2,"51":1,"53":1}}],["vite",{"2":{"1":2,"4":1,"9":1,"10":1,"11":1,"35":1,"36":1,"38":17,"39":5,"54":3,"75":1}}],["v",{"0":{"13":1,"14":1,"15":3,"16":1,"17":1,"18":1},"2":{"12":1,"13":1,"14":3,"15":4,"16":2,"17":2,"18":3,"19":3,"36":6}}],["validate",{"2":{"39":2}}],["value",{"2":{"1":4,"11":3,"39":2,"41":2,"44":4}}],["var",{"2":{"33":8}}],["variable",{"2":{"11":1}}],["variablename",{"2":{"11":1}}],["vuetify",{"2":{"52":1}}],["vuex",{"2":{"42":6,"60":1}}],["vuejs",{"2":{"18":1,"19":2,"75":4}}],["vue",{"0":{"6":1,"8":1,"12":1,"29":1,"42":1,"53":1,"67":1},"1":{"7":1,"8":1,"9":2,"10":1,"11":1,"12":1,"13":2,"14":2,"15":2,"16":2,"17":2,"18":2,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1},"2":{"6":4,"7":9,"8":12,"9":7,"10":8,"11":18,"12":3,"14":1,"16":1,"17":1,"18":3,"19":9,"20":1,"26":1,"27":2,"29":4,"33":1,"35":1,"36":3,"38":5,"39":21,"41":6,"42":12,"43":1,"44":17,"45":2,"52":4,"53":19,"54":1,"57":1,"67":1,"73":1,"75":1}}],["it",{"2":{"42":2}}],["i18next",{"2":{"41":1}}],["i18n",{"2":{"39":6,"41":3}}],["ignoredlocales",{"2":{"39":2}}],["ignore",{"2":{"39":4}}],["ignoretrimwhitespace",{"2":{"39":2}}],["ignorerecommendations",{"2":{"39":2}}],["ie6",{"2":{"52":1}}],["iex",{"2":{"39":2}}],["ie11",{"2":{"37":1}}],["ie",{"2":{"37":1}}],["iconify",{"2":{"39":4}}],["icon",{"2":{"36":2}}],["icons",{"0":{"37":1},"2":{"36":3,"37":2}}],["i",{"2":{"16":7,"39":2}}],["if=",{"2":{"36":2}}],["if",{"0":{"15":2},"2":{"15":1,"19":1,"33":6}}],["imageresources",{"2":{"37":6}}],["imageraw",{"2":{"35":2}}],["imagenameinvariable",{"2":{"35":2}}],["image",{"2":{"35":8}}],["imageurl",{"2":{"35":2}}],["images",{"2":{"33":2,"35":5,"37":4}}],["imgurl",{"2":{"35":4}}],["img",{"2":{"13":2,"35":12,"36":2}}],["import",{"2":{"1":17,"11":4,"19":6,"35":6,"36":5,"37":12,"38":5,"39":4}}],["isn",{"2":{"42":2}}],["isauthenticated",{"2":{"42":1}}],["ist",{"2":{"39":2}}],["issuenumberlabel",{"2":{"39":2}}],["is=",{"2":{"19":2}}],["is",{"2":{"10":2,"19":1,"39":2,"41":4,"42":2}}],["idx",{"2":{"39":2}}],["ide",{"0":{"39":1},"2":{"39":1,"74":1}}],["id",{"2":{"8":1,"16":1,"21":1,"33":4}}],["id=",{"2":{"8":4}}],["ip",{"2":{"2":1}}],["inject",{"2":{"42":2}}],["ind",{"2":{"39":2}}],["indent",{"2":{"39":2}}],["index",{"2":{"9":1,"33":2,"54":2}}],["inplace",{"2":{"39":2}}],["inputs",{"2":{"33":10}}],["input",{"2":{"17":3,"22":1,"39":2,"44":1}}],["insertfinalnewline",{"2":{"39":2}}],["install",{"2":{"33":20}}],["invisiblecharacters",{"2":{"39":2}}],["inlinesuggest",{"2":{"39":2}}],["in",{"2":{"16":2,"18":1,"19":2,"37":4,"39":2,"42":1}}],["info",{"2":{"4":4}}],["intl",{"2":{"40":1}}],["integrated",{"2":{"39":10}}],["integration",{"2":{"31":1}}],["interface",{"2":{"74":1}}],["interfaces",{"2":{"71":1}}],["intersection",{"2":{"41":1}}],["interval",{"2":{"39":2}}],["interceptors",{"2":{"1":2}}],["into",{"2":{"1":2}}],["init",{"2":{"1":2,"33":3}}],["us",{"2":{"39":2}}],["usenewswidget",{"2":{"44":1}}],["usei18n",{"2":{"44":1,"45":1}}],["useshoppingcart",{"2":{"44":1}}],["usescreensize",{"2":{"44":1}}],["uses",{"2":{"33":20}}],["use",{"2":{"22":1,"39":2,"51":1}}],["useauthservice",{"2":{"42":1}}],["useauthstore",{"2":{"42":1}}],["useauth",{"2":{"1":8,"42":1}}],["userloggedin",{"2":{"42":2}}],["username",{"2":{"33":4,"42":1}}],["user",{"2":{"1":4,"33":12,"39":6,"74":2}}],["userid",{"2":{"1":2}}],["users",{"2":{"1":13}}],["userdata",{"2":{"1":2}}],["unit",{"2":{"43":6}}],["unique",{"2":{"42":1}}],["unicodehighlight",{"2":{"39":2}}],["unlighthouse",{"2":{"39":4}}],["unocss",{"2":{"39":20}}],["uno",{"2":{"39":20}}],["untrackedchanges",{"2":{"39":2}}],["unpkg",{"2":{"8":2}}],["up",{"2":{"33":2,"39":2}}],["update",{"2":{"33":2,"39":2}}],["updating",{"2":{"33":2}}],["ubuntu",{"2":{"33":6}}],["ui",{"0":{"47":1,"52":1},"2":{"29":1,"38":2,"40":2,"43":1,"44":3,"45":2,"47":1,"49":1,"52":10,"74":1}}],["ux",{"2":{"29":2,"54":2,"74":1}}],["url",{"2":{"1":2,"35":3,"37":2}}],["utils",{"2":{"1":6,"36":3,"45":1}}],["fcp",{"2":{"54":1}}],["fetish",{"2":{"43":1}}],["fetch",{"2":{"1":1,"33":2}}],["fnc",{"2":{"40":1}}],["fu",{"2":{"39":1}}],["function",{"2":{"37":6}}],["functions",{"2":{"3":2,"42":1}}],["flow",{"2":{"71":1}}],["flowconfig",{"2":{"39":4}}],["flexbox",{"2":{"50":1,"70":2}}],["flake",{"2":{"39":4}}],["flash",{"2":{"6":1}}],["fls",{"2":{"39":2}}],["fdb",{"2":{"39":2}}],["frequently",{"2":{"75":1}}],["freezed",{"2":{"39":2}}],["from",{"2":{"1":18,"11":4,"19":6,"35":6,"36":4,"37":4,"38":4}}],["fontweight",{"2":{"39":2}}],["fontligatures",{"2":{"39":2}}],["fontfamily",{"2":{"39":2}}],["fontaliasing",{"2":{"39":2}}],["folder",{"2":{"33":2}}],["fork",{"2":{"73":1}}],["foreign",{"2":{"42":1}}],["formulate",{"2":{"39":20}}],["formkit",{"2":{"39":20}}],["formatter",{"2":{"39":2}}],["formatting",{"2":{"39":2}}],["formatonsave",{"2":{"39":2}}],["format",{"2":{"33":6,"39":4}}],["for=",{"2":{"16":2}}],["for",{"0":{"16":1},"2":{"16":1,"19":1,"33":2,"37":4,"39":2,"54":1}}],["fallback",{"2":{"37":1}}],["false",{"2":{"1":2,"33":4,"39":54,"42":2}}],["faq",{"0":{"73":1},"2":{"33":1,"75":1}}],["facebook",{"2":{"7":1}}],["fix",{"2":{"39":2}}],["fixall",{"2":{"39":4}}],["find",{"2":{"39":2}}],["fingerprint",{"2":{"2":1}}],["field",{"2":{"37":4}}],["fill",{"2":{"36":2}}],["filenesting",{"2":{"39":6}}],["filename",{"2":{"37":20}}],["filelistlayout",{"2":{"39":2}}],["files",{"2":{"33":2,"39":6}}],["file=",{"2":{"33":2}}],["file",{"2":{"33":4,"39":4}}],["fi",{"2":{"33":4}}],["firestore",{"2":{"53":1}}],["firebase",{"2":{"3":2,"34":2,"39":8}}],["fira",{"2":{"39":2}}],["first",{"2":{"22":1,"39":2}}],["article",{"2":{"50":1}}],["artisan",{"2":{"39":2}}],["azure",{"2":{"39":4}}],["air",{"2":{"39":2}}],["ava",{"2":{"39":20}}],["aux",{"2":{"39":2}}],["autocompleterefs",{"2":{"39":2}}],["autodetection",{"2":{"39":2}}],["autodetectcolorscheme",{"2":{"39":2}}],["autofetch",{"2":{"39":2}}],["autoupdate",{"2":{"39":2}}],["auto",{"2":{"36":2,"39":2}}],["authors",{"2":{"39":6}}],["authorization",{"2":{"2":2}}],["authinterceptor",{"2":{"1":4}}],["auth",{"2":{"1":6}}],["addextraspaceontop",{"2":{"39":2}}],["addresponseinterceptor",{"2":{"1":4}}],["angular",{"2":{"44":2}}],["an",{"2":{"42":2}}],["analysis",{"2":{"39":2,"71":1}}],["annotations",{"2":{"39":2}}],["antony",{"2":{"39":1}}],["antfu",{"2":{"39":5}}],["antialiased",{"2":{"39":2}}],["and",{"0":{"29":1},"2":{"33":8,"42":4,"53":1}}],["always",{"2":{"42":1}}],["alg",{"2":{"39":2}}],["all",{"2":{"39":2}}],["ally",{"2":{"39":6}}],["allowcompoundwords",{"2":{"39":2}}],["allows",{"2":{"39":2}}],["allow",{"2":{"4":7}}],["alias",{"2":{"38":2}}],["amp",{"2":{"33":8,"39":2}}],["amazon",{"2":{"3":2,"34":2}}],["after",{"2":{"33":2}}],["acr",{"2":{"39":2}}],["acn",{"2":{"39":2}}],["active",{"2":{"39":2}}],["activitybar",{"2":{"39":2}}],["actions",{"0":{"33":1},"2":{"31":1,"33":15,"39":1,"53":1,"59":1}}],["action",{"2":{"19":7,"33":14,"39":1}}],["accessibility",{"2":{"52":1}}],["accessibilitysupport",{"2":{"39":2}}],["access",{"2":{"2":5,"4":5,"74":1}}],["account",{"2":{"1":2,"35":2,"37":1}}],["apollo",{"2":{"39":4}}],["apache",{"2":{"34":1}}],["application",{"2":{"54":2}}],["appleboy",{"2":{"33":5}}],["appveyor",{"2":{"39":4}}],["appsettings",{"2":{"39":4}}],["app",{"2":{"8":9,"9":1,"10":2,"36":3,"45":1,"54":1}}],["api",{"0":{"1":1,"11":1},"2":{"1":18,"3":5,"5":2,"11":16,"18":1,"19":2,"34":2,"39":24,"41":4,"42":1,"44":1,"45":2,"53":3,"54":1,"60":1}}],["aws",{"2":{"3":1}}],["await",{"2":{"1":4}}],["a",{"2":{"3":1,"7":2,"37":2,"39":1,"41":4,"42":3,"45":1,"53":1,"54":1}}],["asked",{"2":{"75":1}}],["aside",{"2":{"50":1}}],["astro",{"2":{"39":2}}],["aspx",{"2":{"39":2}}],["ashx",{"2":{"39":2}}],["ascx",{"2":{"39":2}}],["asax",{"2":{"39":2}}],["assets",{"2":{"35":5,"37":4,"45":1}}],["as",{"2":{"3":1,"37":6}}],["async",{"2":{"1":2}}],["at",{"2":{"2":6,"39":2,"74":1}}],["axios",{"2":{"1":1}}],["=+",{"2":{"39":2}}],["==",{"2":{"33":6}}],["=",{"2":{"1":10,"7":2,"8":2,"11":6,"19":4,"33":6,"36":10,"37":12,"41":8,"42":2,"44":2}}],["бд",{"2":{"42":1}}],["брать",{"2":{"44":1}}],["брали",{"2":{"33":1}}],["браузеру",{"2":{"38":1}}],["браузеры",{"2":{"34":1,"54":1}}],["браузером",{"2":{"33":1,"54":1}}],["браузере",{"2":{"8":1,"9":1,"35":1,"54":3}}],["браузерами",{"2":{"6":1}}],["браузера",{"2":{"4":2,"6":1,"9":1,"29":1,"54":1}}],["браузер",{"2":{"2":1,"4":3,"9":4,"10":1,"43":1}}],["буквы",{"2":{"23":1}}],["буквами",{"2":{"22":1,"25":1}}],["булево",{"2":{"14":2}}],["будто",{"2":{"52":1}}],["будущее",{"2":{"19":1}}],["будущем",{"2":{"7":1}}],["будут",{"2":{"8":1,"11":1,"15":1,"19":1,"22":1,"25":1,"33":1}}],["будем",{"2":{"6":1,"7":1,"8":1,"9":2,"10":2,"11":3,"18":1,"20":1,"25":1,"26":1,"33":2}}],["будете",{"2":{"6":1,"38":1,"53":1}}],["будет",{"2":{"1":1,"3":2,"4":1,"5":1,"7":2,"8":3,"9":2,"11":2,"13":2,"14":3,"15":1,"16":1,"17":1,"18":1,"19":1,"33":1,"35":1,"39":1,"42":2,"43":3,"52":1,"53":2}}],["близко",{"2":{"54":1}}],["ближе",{"2":{"11":1}}],["блестящих",{"2":{"29":1}}],["благодаря",{"2":{"54":1}}],["благодарю",{"2":{"29":1}}],["благополучия",{"2":{"29":1}}],["блока",{"2":{"39":1}}],["блоки",{"2":{"9":1}}],["блог",{"2":{"2":1}}],["билдом",{"2":{"43":1}}],["билде",{"2":{"35":1}}],["билда",{"2":{"31":1,"33":2,"34":1,"38":1}}],["библиотекой",{"2":{"27":1,"42":1,"46":1}}],["библиотека",{"2":{"7":4,"41":1,"42":4,"46":1}}],["библиотек",{"0":{"47":1},"2":{"6":1,"7":2,"26":1,"40":1,"49":1,"52":7}}],["библиотеки",{"0":{"52":1},"2":{"6":1,"7":3,"9":1,"10":1,"38":1,"44":1,"47":1,"52":4}}],["библиотеку",{"0":{"40":1},"2":{"1":1,"7":2,"42":1,"45":1,"47":1,"52":1}}],["бизнес",{"2":{"3":1,"42":5,"44":1}}],["баги",{"2":{"45":1}}],["база",{"2":{"39":1,"42":1}}],["базам",{"2":{"39":1}}],["базовую",{"2":{"45":1}}],["базовых",{"2":{"9":1}}],["базовом",{"2":{"7":1,"53":1}}],["базовое",{"2":{"6":1}}],["базе",{"2":{"3":3,"42":1}}],["базу",{"2":{"3":1}}],["базы",{"2":{"3":1}}],["бандле",{"2":{"38":1}}],["бандла",{"2":{"35":1,"46":1}}],["бандл",{"2":{"3":1,"35":1,"41":1,"52":1}}],["бесполезно",{"2":{"53":1}}],["бесплатно",{"2":{"53":1}}],["бесплатной",{"2":{"8":1}}],["бесплатными",{"2":{"34":1}}],["бесплатные",{"2":{"3":3,"34":1,"53":1}}],["бешено",{"2":{"39":1}}],["бегло",{"2":{"9":1}}],["безвозвратно",{"2":{"40":1}}],["безопасного",{"2":{"29":1}}],["безопасность",{"2":{"2":3}}],["безопасности",{"2":{"2":2,"45":1}}],["без",{"2":{"3":2,"7":1,"31":1,"37":1,"39":1,"43":1,"44":2,"52":1,"53":1,"54":1}}],["бывают",{"2":{"43":1}}],["бывает",{"2":{"5":1,"42":1}}],["быстрей",{"2":{"38":1,"39":1,"44":1,"49":1}}],["быстрее",{"2":{"38":1}}],["быстрый",{"2":{"10":1,"39":1}}],["быстрого",{"2":{"43":1}}],["быстро",{"2":{"7":1,"27":1,"45":1,"52":1}}],["была",{"2":{"41":1,"52":1,"54":1}}],["было",{"2":{"19":1,"41":1,"44":3}}],["был",{"2":{"7":1,"25":1,"34":2,"42":2,"54":1}}],["были",{"2":{"6":3}}],["быть",{"2":{"2":1,"7":3,"9":1,"10":1,"11":3,"14":1,"15":1,"18":1,"19":3,"33":4,"35":1,"41":1,"43":1,"45":1,"48":1,"53":1,"54":3,"75":1}}],["бы",{"2":{"2":1,"53":2}}],["бота",{"2":{"54":2}}],["ботов",{"2":{"54":1}}],["боялся",{"2":{"53":1}}],["боковым",{"2":{"45":1}}],["бо́льшая",{"2":{"44":1}}],["бойлерплейта",{"2":{"44":1}}],["бонусная",{"2":{"29":1}}],["бонусами",{"2":{"2":1}}],["большую",{"2":{"44":1}}],["большой",{"2":{"11":1}}],["большого",{"2":{"7":1}}],["больше",{"2":{"8":1,"15":1,"19":1,"20":1,"29":1,"39":2,"44":2,"53":1,"54":2}}],["большей",{"2":{"7":1,"11":1}}],["большая",{"2":{"7":1,"53":1}}],["больших",{"2":{"11":1,"15":2,"33":1,"43":1,"44":3}}],["большим",{"2":{"10":1,"41":1,"43":2}}],["большими",{"2":{"3":1,"44":1}}],["большинстве",{"2":{"7":1,"41":1,"54":1}}],["большинство",{"2":{"3":2,"6":1,"53":1}}],["большие",{"2":{"2":1}}],["более",{"2":{"2":1,"4":2,"5":1,"7":1,"8":1,"10":1,"11":3,"16":1,"17":1,"25":1,"33":1,"35":1,"38":1,"41":1,"42":1,"44":3,"45":1,"53":2}}],["бороться",{"2":{"2":1}}],["бэке",{"2":{"5":1,"44":2}}],["бэкенде",{"2":{"5":1,"53":2}}],["бэкенда",{"2":{"3":1,"4":2,"54":1}}],["бэкенд",{"0":{"3":1},"2":{"2":5,"3":5,"4":2,"34":1,"43":1,"44":1}}],["бэкенду",{"2":{"1":1}}],["бэкендом",{"0":{"0":1},"1":{"1":1},"2":{"1":2,"4":1,"57":1}}],["бэком",{"2":{"5":1}}],["бэкапов",{"2":{"33":1}}],["бэкапить",{"2":{"33":1}}],["бэка",{"2":{"2":1,"3":1,"44":1}}],["бэк",{"2":{"1":1,"2":2,"3":1,"39":1}}],["дня",{"2":{"53":1}}],["дней",{"2":{"49":1,"53":1}}],["дриллинг",{"2":{"42":1}}],["другую",{"2":{"47":1}}],["друг",{"2":{"45":1}}],["других",{"2":{"7":2,"19":2,"34":1,"44":2}}],["другими",{"2":{"31":1,"42":1,"45":1,"54":1}}],["другим",{"2":{"7":1,"11":1}}],["другие",{"2":{"3":1,"5":1,"6":3,"7":1,"9":1,"10":3,"11":2,"18":1,"34":1,"35":1,"39":1,"44":1,"51":1,"54":1}}],["другого",{"2":{"11":1,"42":2}}],["другое",{"2":{"7":1,"11":2,"19":1,"42":1}}],["другой",{"2":{"4":1,"7":1,"9":1,"33":1,"42":4,"45":1,"53":1}}],["другом",{"2":{"3":1,"11":1,"37":1,"45":1}}],["дюймов",{"2":{"39":1}}],["диаграммы",{"2":{"51":1}}],["диаграмму",{"2":{"9":1}}],["динамической",{"2":{"54":1}}],["динамическое",{"2":{"12":1}}],["динамически",{"2":{"54":1}}],["динамично",{"2":{"35":1,"44":1}}],["директорий",{"2":{"36":1}}],["директорию",{"2":{"33":1}}],["директория",{"2":{"33":2}}],["директива",{"2":{"12":1,"13":1,"14":1,"17":1,"18":1}}],["директивами",{"2":{"12":1}}],["директив",{"0":{"12":1},"1":{"13":1,"14":1,"15":1,"16":1,"17":1,"18":1},"2":{"18":1,"19":2,"26":1}}],["директивы",{"2":{"10":1,"12":2,"15":1,"18":2,"27":1}}],["дисциплине",{"2":{"29":1}}],["дисковое",{"2":{"38":1}}],["диск",{"2":{"2":1,"39":1}}],["дизайна",{"2":{"44":1}}],["дизайнерами",{"2":{"29":1}}],["дизайн",{"2":{"29":1,"74":1}}],["д",{"2":{"3":1,"7":1,"8":1,"10":1,"11":2,"17":1,"19":1,"50":1,"54":1}}],["дойти",{"2":{"54":1}}],["домашний",{"2":{"54":1}}],["доменов",{"2":{"4":1}}],["доменом",{"2":{"4":1}}],["домен",{"2":{"4":1,"34":3,"53":1}}],["домена",{"2":{"4":4,"34":1}}],["доброжелательные",{"2":{"53":1}}],["добавьте",{"2":{"33":1}}],["добавили",{"2":{"11":1}}],["добавить",{"2":{"39":1,"45":2,"52":1}}],["добавит",{"2":{"4":1}}],["добавление",{"2":{"41":1,"44":1,"73":1}}],["добавления",{"2":{"7":1}}],["добавляются",{"2":{"54":1}}],["добавлялись",{"2":{"6":1}}],["добавляется",{"2":{"35":1}}],["добавляет",{"2":{"4":1,"45":1,"52":1}}],["документ",{"2":{"52":1}}],["документирования",{"2":{"51":1}}],["документируйте",{"0":{"51":1}}],["документаций",{"2":{"54":1}}],["документация",{"2":{"42":1,"53":3,"75":1}}],["документации",{"2":{"18":1,"19":1,"33":1,"35":1,"53":1,"74":1}}],["документацию",{"2":{"7":1,"19":1}}],["документа",{"2":{"14":1}}],["допустим",{"2":{"45":1}}],["дополнительных",{"2":{"11":1,"31":1}}],["дополнительным",{"2":{"9":1}}],["дополнительные",{"2":{"6":1,"7":1,"54":1}}],["дополнительной",{"2":{"7":2}}],["доскролил",{"2":{"41":1}}],["достойны",{"2":{"53":1}}],["достаточно",{"2":{"39":1,"40":1,"44":1,"45":1,"54":1}}],["доставка",{"2":{"31":1}}],["доставки",{"2":{"8":1}}],["достижений",{"2":{"10":1}}],["доступе",{"2":{"53":1}}],["доступен",{"2":{"34":1}}],["доступной",{"2":{"42":1}}],["доступна",{"2":{"42":1}}],["доступными",{"2":{"29":1}}],["доступны",{"2":{"11":1,"35":1}}],["доступа",{"2":{"2":5,"3":1,"4":1,"11":1,"33":1,"39":1}}],["доступ",{"2":{"1":1,"2":3,"3":3,"4":8,"11":4,"34":1,"35":1,"42":2}}],["дочерние",{"2":{"19":1}}],["дочернего",{"2":{"11":1}}],["дороги",{"2":{"15":1}}],["догадались",{"2":{"10":1}}],["до",{"2":{"6":2,"7":2,"9":1,"11":1,"18":1,"19":1,"26":2,"35":1,"41":1,"54":3}}],["доводить",{"2":{"26":1}}],["довольно",{"2":{"3":2,"5":1,"39":1,"53":1,"54":1}}],["доверенных",{"2":{"4":2}}],["должна",{"2":{"7":1,"10":1,"11":1,"19":1,"33":1,"53":1}}],["должны",{"2":{"7":1,"9":2,"35":1,"41":1,"48":1}}],["должном",{"2":{"52":1}}],["должно",{"2":{"2":1,"3":1,"18":1,"43":1}}],["должен",{"2":{"2":1,"7":2,"16":1,"33":2,"42":1,"54":1}}],["дольше",{"2":{"2":1}}],["двоеточия",{"2":{"18":1}}],["двоеточие",{"2":{"13":1}}],["двойные",{"2":{"8":1}}],["двусмысленное",{"2":{"42":1}}],["двусторонним",{"2":{"17":1}}],["двухдневный",{"2":{"53":1}}],["двух",{"2":{"7":1}}],["двунаправленную",{"2":{"5":1}}],["два",{"2":{"2":1,"11":1,"16":1,"19":1,"45":1,"53":2,"54":2}}],["две",{"2":{"2":1,"5":1,"11":1}}],["даёт",{"2":{"39":1,"44":1,"53":1}}],["дат",{"2":{"41":1}}],["датами",{"2":{"40":1}}],["дату",{"2":{"33":1}}],["датой",{"2":{"33":1}}],["дать",{"2":{"2":1}}],["давид",{"2":{"29":1}}],["давайте",{"2":{"7":2,"8":1,"10":1,"11":2,"20":1}}],["давать",{"2":{"2":1}}],["даст",{"2":{"29":1,"44":1}}],["дадим",{"2":{"29":1}}],["да",{"2":{"11":2}}],["даже",{"2":{"2":1,"4":1,"6":2,"7":2,"19":1,"26":1,"41":1,"42":2,"44":1,"52":1,"53":2}}],["дает",{"2":{"2":1,"5":2,"11":1,"14":1,"41":1}}],["дал",{"2":{"42":1}}],["дальнейших",{"2":{"29":1}}],["дальнейшей",{"2":{"19":1,"27":1}}],["дальнейшем",{"2":{"9":1,"18":1,"52":1}}],["дальше",{"2":{"2":1,"7":1,"49":1}}],["далеко",{"2":{"3":1,"43":1,"46":1}}],["далее",{"2":{"2":1,"7":1,"8":1,"11":1,"25":1}}],["данная",{"2":{"44":1,"54":1}}],["данного",{"0":{"73":1},"2":{"33":1,"41":1,"42":1,"45":1}}],["данном",{"2":{"7":1,"8":1,"10":1,"11":1,"33":1,"42":1,"44":1}}],["данной",{"2":{"2":1,"12":1}}],["данный",{"2":{"11":1,"52":1,"75":1}}],["данным",{"2":{"4":1,"53":1}}],["данными",{"2":{"3":3}}],["данных",{"2":{"3":7,"4":1,"5":1,"7":2,"11":3,"16":1,"17":1,"29":1,"39":2,"42":4,"44":2,"45":1,"53":1,"54":1}}],["данные",{"2":{"2":2,"3":3,"4":1,"22":1,"41":1,"42":3,"44":4,"53":1,"54":3}}],["десктоп",{"2":{"54":1}}],["десятки",{"2":{"38":1,"39":1}}],["десятилетнем",{"2":{"37":1}}],["держать",{"2":{"53":1}}],["дереву",{"2":{"42":1}}],["дерева",{"2":{"19":1}}],["дерево",{"2":{"9":1}}],["детей",{"2":{"53":1}}],["детали",{"2":{"51":1}}],["детальную",{"2":{"45":1}}],["деталях",{"2":{"17":1}}],["декомпозиции",{"2":{"44":1}}],["декларируемое",{"2":{"42":1}}],["деньги",{"2":{"39":1}}],["деплое",{"2":{"33":1}}],["деплоится",{"2":{"33":1}}],["деплоить",{"2":{"33":1}}],["деплой",{"2":{"33":1,"59":1,"60":1}}],["деплоя",{"2":{"33":4,"53":1}}],["депозитами",{"2":{"2":1}}],["девопс",{"2":{"31":1}}],["делиться",{"2":{"42":1}}],["деле",{"2":{"25":1}}],["делайте",{"2":{"46":1,"48":1}}],["дела",{"2":{"45":1}}],["делающее",{"2":{"42":1}}],["делали",{"2":{"35":1}}],["делаем",{"2":{"11":1}}],["делается",{"2":{"2":1,"11":1}}],["делает",{"2":{"2":1,"5":1,"8":1,"10":1,"38":1,"39":1,"42":1,"44":1}}],["делать",{"2":{"3":1,"4":1,"39":1,"41":1,"42":1,"54":2}}],["действительно",{"2":{"37":1,"43":1}}],["действительная",{"2":{"2":1}}],["действий",{"2":{"31":1}}],["действии",{"2":{"9":1}}],["действия",{"2":{"2":1,"43":1}}],["действие",{"2":{"2":2,"9":1}}],["для",{"0":{"3":1,"27":1},"2":{"1":1,"2":4,"3":3,"4":3,"5":5,"6":4,"7":8,"8":5,"9":5,"10":9,"11":11,"15":2,"16":2,"18":3,"19":6,"20":1,"22":1,"25":4,"26":1,"27":2,"29":5,"31":1,"33":12,"34":3,"35":2,"36":1,"37":2,"38":8,"39":9,"40":2,"41":7,"42":5,"43":3,"44":8,"45":4,"47":1,"48":2,"49":1,"51":1,"52":2,"53":6,"54":18,"75":1}}],["тэгов",{"2":{"52":1}}],["тяжеловеса",{"2":{"41":1}}],["тяжеловесности",{"2":{"40":1}}],["тише",{"2":{"39":1}}],["тип",{"2":{"52":1}}],["типов",{"2":{"43":1}}],["типыref",{"2":{"42":1}}],["типы",{"2":{"17":1,"42":1}}],["типа",{"2":{"4":1,"10":1,"34":1,"35":1,"38":1,"45":1,"52":3,"53":1,"54":1}}],["тайлвинде",{"2":{"49":1}}],["таймстемпа",{"2":{"33":1}}],["тарифы",{"2":{"34":1}}],["таблицы",{"2":{"6":1}}],["там",{"2":{"3":1,"33":2,"39":1,"42":1,"43":1}}],["такую",{"2":{"9":1}}],["таки",{"2":{"53":1,"54":1}}],["такие",{"2":{"7":1,"17":2}}],["таким",{"2":{"2":2,"3":1,"8":1,"9":1,"16":1,"52":1}}],["также",{"2":{"2":2,"3":1,"6":2,"7":3,"10":3,"11":1,"12":2,"18":2,"19":2,"25":1,"34":1,"38":1,"39":1,"42":1,"43":1,"44":2,"47":1,"52":2,"53":5,"54":1,"73":1}}],["такого",{"2":{"11":1}}],["такой",{"2":{"11":1,"54":1}}],["таковыми",{"2":{"52":1}}],["таковы",{"2":{"7":1}}],["такового",{"2":{"2":1}}],["такое",{"2":{"2":2,"3":1,"4":1,"5":1,"6":1,"7":2,"9":1,"19":1,"27":1,"31":1,"33":1,"42":1,"43":1,"44":1,"45":1,"52":1,"54":1}}],["так",{"2":{"1":1,"2":1,"5":1,"6":1,"7":1,"8":1,"11":3,"15":2,"25":1,"33":3,"38":1,"39":1,"42":2,"43":1,"53":1,"54":3,"75":2}}],["т",{"2":{"3":1,"7":1,"8":1,"10":1,"11":2,"17":1,"19":1,"43":1,"45":1,"50":1,"54":1,"74":1}}],["тупиковой",{"2":{"54":1}}],["туда",{"2":{"3":1,"10":1,"48":1}}],["тут",{"2":{"3":1}}],["твой",{"2":{"2":1,"3":1,"39":1}}],["твоего",{"2":{"2":1}}],["твоему",{"2":{"2":1,"3":1}}],["твоем",{"2":{"2":1,"39":1}}],["ты",{"2":{"2":1,"45":1}}],["телеграм",{"2":{"75":1}}],["телодвижения",{"2":{"2":1}}],["тенденции",{"2":{"52":1}}],["тень",{"2":{"45":1}}],["тебе",{"2":{"45":1}}],["теcты",{"2":{"43":1}}],["тест",{"2":{"53":1}}],["тесты",{"2":{"43":7,"54":1}}],["тестам",{"2":{"42":1}}],["тестов",{"2":{"29":1,"43":3}}],["тестированием",{"2":{"43":2}}],["тестирование",{"0":{"43":1},"2":{"29":1,"43":2}}],["тестирования",{"2":{"3":1,"31":1,"33":1,"43":2}}],["те",{"2":{"12":1}}],["течение",{"2":{"11":1}}],["текущей",{"2":{"33":1,"41":1}}],["текущему",{"2":{"11":1}}],["текстовое",{"2":{"54":1}}],["текстов",{"2":{"29":1}}],["текстовый",{"2":{"10":1,"54":1}}],["текст",{"2":{"17":1,"54":2}}],["теге",{"2":{"12":1}}],["тег",{"2":{"8":1,"10":3,"11":1}}],["тега",{"2":{"8":2}}],["технического",{"2":{"51":1,"53":1}}],["технология",{"2":{"31":1}}],["технологии",{"2":{"6":1,"38":1,"53":1}}],["технологий",{"2":{"6":1}}],["тех",{"2":{"7":1,"19":1,"54":1}}],["теоретические",{"2":{"45":1}}],["теоретически",{"2":{"7":1}}],["теперь",{"2":{"7":1,"11":3,"19":1}}],["терминологией",{"2":{"7":1}}],["терминов",{"2":{"7":1}}],["терминами",{"2":{"7":1}}],["темам",{"2":{"75":1}}],["темы",{"2":{"6":1,"45":1}}],["теми",{"2":{"6":1}}],["тему",{"2":{"5":1,"43":1}}],["тем",{"2":{"5":2,"7":2,"9":1,"10":1,"11":2,"17":1,"29":1,"42":1}}],["теме",{"2":{"2":1,"4":1}}],["трудозатратней",{"2":{"54":1}}],["трудозатратам",{"2":{"54":1}}],["трудно",{"2":{"11":1}}],["трудностями",{"2":{"7":1}}],["трудностей",{"2":{"5":1}}],["тривиального",{"2":{"11":1}}],["три",{"2":{"10":1,"33":2}}],["трагедия",{"2":{"52":1}}],["традиционно",{"2":{"10":1}}],["традиционном",{"2":{"7":2}}],["транспиляции",{"2":{"38":1}}],["транспортные",{"2":{"5":1,"53":1}}],["транспортным",{"2":{"1":1}}],["трансформацию",{"2":{"6":1}}],["требования",{"2":{"52":1,"54":1}}],["требований",{"2":{"2":1}}],["требуются",{"2":{"41":1}}],["требуют",{"2":{"19":1,"34":1}}],["требуеться",{"2":{"38":1}}],["требует",{"2":{"5":1,"38":1}}],["требуется",{"2":{"3":1}}],["товаров",{"2":{"45":1}}],["товара",{"2":{"2":1,"45":1,"54":1}}],["торопитесь",{"2":{"46":1}}],["тормозит",{"2":{"45":1}}],["торговые",{"2":{"7":1}}],["тоже",{"2":{"44":1,"54":1}}],["тонкую",{"2":{"39":1}}],["тонкий",{"2":{"11":2}}],["той",{"2":{"15":1,"33":1,"42":1}}],["точней",{"2":{"54":1}}],["точно",{"2":{"4":1,"25":1}}],["точка",{"2":{"54":1}}],["точки",{"2":{"10":1,"29":1,"42":3,"74":1}}],["точку",{"2":{"8":1}}],["тот",{"2":{"7":2,"11":1,"44":1,"53":1}}],["том",{"2":{"6":1,"7":4,"8":1,"9":1,"11":1,"15":1,"29":1,"54":1}}],["тобой",{"2":{"3":1}}],["то",{"2":{"2":4,"3":3,"7":7,"9":1,"10":2,"11":3,"13":2,"14":1,"19":1,"27":2,"33":1,"34":1,"38":1,"39":1,"41":2,"42":5,"43":4,"44":1,"45":3,"47":2,"53":4,"54":6}}],["того",{"2":{"2":1,"7":2,"8":2,"11":7,"18":1,"27":1,"33":3,"38":2,"42":1,"44":1,"45":1,"46":1,"54":3}}],["тогда",{"2":{"1":1,"18":1}}],["только",{"2":{"2":2,"3":1,"4":2,"7":1,"8":1,"9":1,"10":1,"11":2,"13":2,"15":1,"20":1,"31":1,"37":1,"39":3,"41":2,"42":4,"44":1,"49":1,"52":2}}],["токена",{"2":{"2":2}}],["токенах",{"2":{"2":2}}],["токеном",{"2":{"2":1}}],["токену",{"2":{"2":1}}],["токен",{"2":{"2":7,"74":2}}],["вряд",{"2":{"53":1}}],["вроде",{"2":{"42":1,"54":1}}],["вращающихся",{"2":{"39":1}}],["время",{"2":{"7":2,"8":2,"9":1,"11":1,"19":1,"39":1,"41":1,"42":1,"43":5,"45":1,"46":1,"48":1,"53":1}}],["времена",{"2":{"52":1}}],["временами",{"2":{"6":1}}],["времени",{"2":{"11":1,"43":1,"48":1,"52":1,"53":1}}],["временем",{"2":{"11":1,"33":1}}],["временное",{"2":{"4":1}}],["вторых",{"2":{"53":1}}],["вторично",{"2":{"39":1}}],["второй",{"2":{"39":3}}],["втором",{"2":{"2":2}}],["введите",{"2":{"73":1}}],["введи",{"2":{"45":1}}],["введенный",{"2":{"41":1}}],["введем",{"2":{"8":1}}],["вводились",{"2":{"44":1}}],["вводить",{"2":{"46":1}}],["вводит",{"2":{"17":1}}],["вводе",{"2":{"44":1}}],["ввода",{"2":{"17":1}}],["влияет",{"2":{"12":1,"46":1}}],["входе",{"2":{"54":1}}],["входа",{"2":{"10":1,"44":1,"54":1}}],["входит",{"2":{"4":1,"74":1}}],["впечатление",{"2":{"74":1}}],["вперед",{"2":{"18":1}}],["вплоть",{"2":{"7":1}}],["вполне",{"2":{"2":1,"42":1,"44":1,"53":1}}],["взлетевших",{"2":{"44":1}}],["взлететь",{"2":{"39":1}}],["взяли",{"2":{"45":1}}],["взяв",{"2":{"44":1}}],["взять",{"2":{"7":1}}],["взгляд",{"2":{"11":1,"29":1}}],["взглянуть",{"2":{"5":1}}],["взвесить",{"2":{"7":1}}],["взаимодействия",{"2":{"45":1}}],["взаимодействий",{"2":{"6":1}}],["взаимозаменяемые",{"2":{"7":1}}],["вниз",{"2":{"75":1}}],["внимание",{"2":{"6":1,"7":1,"8":3,"10":1,"11":1}}],["вновь",{"2":{"52":1}}],["вносит",{"2":{"52":1}}],["вносят",{"2":{"6":1}}],["внутрь",{"2":{"39":1}}],["внутренние",{"2":{"44":1}}],["внутренних",{"2":{"19":1}}],["внутренней",{"2":{"19":1}}],["внутреннем",{"2":{"11":1}}],["внутри",{"2":{"7":3,"8":2,"16":1,"35":1,"41":3,"42":1}}],["внесения",{"2":{"73":1}}],["внесенных",{"2":{"7":1}}],["внесите",{"0":{"73":1}}],["внешней",{"2":{"42":1}}],["внешнего",{"2":{"6":1}}],["внешний",{"2":{"6":1}}],["включается",{"2":{"39":1}}],["включать",{"2":{"6":1,"39":1}}],["включая",{"2":{"6":1,"38":1,"39":1,"52":1}}],["вместе",{"2":{"5":1,"19":1,"46":1}}],["вместо",{"2":{"4":1,"9":1,"10":1,"11":1,"38":1,"54":1}}],["ветвью",{"2":{"54":1}}],["ветках",{"2":{"42":1}}],["ветки",{"2":{"33":2}}],["ветку",{"2":{"33":2}}],["вести",{"2":{"54":1}}],["веса",{"2":{"52":1}}],["весь",{"2":{"9":1,"11":1}}],["весьма",{"2":{"7":1}}],["вентиляторов",{"2":{"39":1}}],["ведет",{"2":{"18":1}}],["ведут",{"2":{"15":1,"16":1}}],["ведущие",{"2":{"9":1}}],["великолепным",{"2":{"10":1}}],["верен",{"2":{"54":1}}],["верстку",{"2":{"52":1}}],["верстать",{"2":{"49":1,"52":1}}],["версию",{"2":{"33":1,"53":1,"54":1}}],["версии",{"2":{"33":2}}],["версия",{"2":{"6":1}}],["верхнего",{"2":{"23":1}}],["вернулся",{"2":{"52":1}}],["вернуть",{"2":{"11":1}}],["верное",{"2":{"7":1}}],["вернет",{"2":{"4":1}}],["вероятность",{"2":{"7":1,"43":1,"45":1}}],["веба",{"2":{"52":1}}],["вебсервер",{"2":{"34":1,"39":1,"54":1}}],["вебсервере",{"2":{"34":1}}],["вебсервера",{"2":{"4":1,"39":1}}],["вебсайта",{"2":{"33":1,"74":1}}],["вебсайт",{"2":{"33":1}}],["веб",{"0":{"8":1},"1":{"9":1},"2":{"4":2,"6":4,"7":2,"8":2,"9":2,"10":1,"13":1,"16":1,"29":1,"39":1,"43":1,"45":2,"54":3}}],["вещи",{"2":{"3":1,"41":1}}],["визуальной",{"2":{"74":1}}],["визуальных",{"2":{"44":1}}],["визуализации",{"2":{"52":1}}],["визуализацию",{"2":{"42":1,"44":1}}],["виртуальный",{"2":{"3":1,"34":1,"53":1}}],["виджетов",{"2":{"42":1}}],["видимой",{"2":{"37":1}}],["видит",{"2":{"2":1}}],["виду",{"2":{"14":1}}],["вида",{"2":{"6":1}}],["вид",{"2":{"6":1}}],["видео",{"2":{"35":1,"53":3,"54":1}}],["видели",{"2":{"18":1}}],["виде",{"2":{"3":2,"6":1,"7":2,"10":1}}],["видно",{"2":{"2":1}}],["встречал",{"2":{"53":1}}],["встретить",{"2":{"20":1,"25":1}}],["встроенные",{"0":{"19":1}}],["встроенных",{"0":{"12":1},"1":{"13":1,"14":1,"15":1,"16":1,"17":1,"18":1},"2":{"18":1,"19":1}}],["встроенного",{"2":{"6":1}}],["вставке",{"2":{"19":1}}],["вступает",{"2":{"9":1}}],["вскоре",{"2":{"6":1}}],["всём",{"2":{"42":1}}],["всё",{"2":{"4":1,"39":1,"44":2,"45":1,"53":1,"54":1,"74":1}}],["всевозможных",{"2":{"53":1}}],["всей",{"2":{"9":1}}],["всегда",{"2":{"7":2,"10":1,"21":1,"25":1,"35":1,"42":1,"46":1}}],["всего",{"2":{"2":1,"3":1,"13":1,"41":2,"42":1,"53":1}}],["всех",{"2":{"4":1,"25":1,"44":2,"54":1}}],["всеми",{"2":{"54":2}}],["всемирная",{"2":{"6":1}}],["всему",{"2":{"10":1,"42":2,"45":1}}],["всем",{"2":{"4":2,"41":1,"45":1}}],["все",{"2":{"2":1,"6":3,"7":1,"8":1,"9":1,"10":2,"11":5,"14":1,"18":1,"19":1,"20":1,"25":2,"26":1,"41":1,"44":1,"52":1,"53":1,"54":1}}],["всячески",{"2":{"73":1}}],["всяких",{"2":{"54":1}}],["вся",{"2":{"1":1,"52":1}}],["воркер",{"2":{"74":1}}],["вообще",{"2":{"35":1,"37":1,"39":2,"54":1}}],["воплотить",{"2":{"29":1}}],["вопросах",{"2":{"75":1}}],["вопроса",{"2":{"73":1}}],["вопросами",{"2":{"27":1}}],["вопросе",{"2":{"53":1}}],["вопросов",{"2":{"53":1,"75":1}}],["вопросом",{"2":{"43":1}}],["вопросы",{"0":{"27":1},"2":{"27":1,"75":1}}],["вопрос",{"2":{"7":2,"53":1,"73":1}}],["воспользоваться",{"2":{"27":1,"39":1,"54":1}}],["воспринимайте",{"2":{"7":1}}],["восстановлено",{"2":{"19":1}}],["волнуйтесь",{"2":{"9":1}}],["волшебства",{"2":{"7":1}}],["вот",{"2":{"4":1,"5":1,"10":1,"11":2,"16":1,"17":1,"39":1,"40":1,"45":1,"53":1}}],["во",{"0":{"42":1},"2":{"2":2,"8":3,"9":1,"11":1,"19":1,"25":1,"39":2,"41":4,"42":7,"43":1,"44":3,"52":1,"53":2,"54":1}}],["возможным",{"2":{"42":1}}],["возможностях",{"2":{"54":1}}],["возможностей",{"2":{"6":1,"39":1,"40":1,"41":1,"54":1}}],["возможности",{"0":{"50":1},"2":{"6":3,"33":1,"38":1,"41":1,"44":1}}],["возможностью",{"2":{"3":1,"34":1}}],["возможность",{"2":{"2":2,"3":3,"7":1,"11":1,"43":1,"44":1,"46":1}}],["возможно",{"2":{"3":1,"11":1,"27":1,"29":1,"33":1,"44":3,"45":1}}],["возвращайтесь",{"2":{"53":1}}],["возвращающая",{"2":{"41":1}}],["возвращающей",{"2":{"11":1}}],["возвращаемое",{"2":{"17":1}}],["возвращается",{"2":{"35":1}}],["возвращает",{"2":{"2":2,"3":1,"8":2,"11":1}}],["возьмет",{"2":{"8":1}}],["возьмем",{"2":{"7":1}}],["возрасти",{"2":{"7":1}}],["возникает",{"2":{"7":1}}],["возникнуть",{"2":{"4":1}}],["вокруг",{"2":{"1":1,"42":1}}],["валидация",{"2":{"42":1}}],["валиден",{"2":{"2":1}}],["ванильному",{"2":{"11":1}}],["важных",{"2":{"29":1}}],["важны",{"2":{"27":1,"43":1}}],["важные",{"2":{"7":1,"29":1,"51":1}}],["важно",{"2":{"9":1,"10":1,"11":1,"14":1,"25":2}}],["вам",{"2":{"7":4,"8":1,"10":1,"11":2,"20":1,"27":2,"29":2,"34":1,"35":1,"38":1,"46":1,"52":1,"53":1,"54":1}}],["варианта",{"2":{"53":1}}],["вариантами",{"2":{"29":1}}],["вариант",{"2":{"5":1,"7":2,"41":1,"53":1}}],["варианты",{"0":{"3":1,"11":1},"2":{"2":1,"6":1,"34":1}}],["вариантов",{"2":{"2":1,"7":1,"8":1,"38":1}}],["вас",{"2":{"10":1,"27":1,"41":1,"42":1}}],["васи",{"2":{"2":1}}],["вася",{"2":{"2":1}}],["ваши",{"2":{"42":1}}],["ваша",{"2":{"25":1}}],["ваше",{"2":{"7":1,"35":1,"46":1,"73":1}}],["вашей",{"2":{"7":1}}],["вашего",{"2":{"4":1,"7":1,"19":1,"33":2,"34":1,"46":2,"48":1,"54":1}}],["вашему",{"2":{"1":1,"34":2,"42":1}}],["вашем",{"2":{"1":1,"35":1,"54":1}}],["ваш",{"2":{"3":1,"7":1,"8":1,"25":1,"33":2,"35":1,"41":1,"51":1,"53":1,"54":2}}],["вашу",{"2":{"1":1,"7":1}}],["в",{"0":{"8":1,"12":1,"20":1,"73":1},"1":{"9":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"21":1,"22":1,"23":1,"24":1,"25":1},"2":{"1":5,"2":18,"3":9,"4":8,"5":1,"6":13,"7":36,"8":13,"9":12,"10":13,"11":37,"12":4,"13":1,"14":1,"15":6,"16":4,"17":5,"18":6,"19":12,"20":3,"21":1,"22":1,"23":1,"24":1,"25":5,"26":2,"27":3,"29":8,"31":2,"33":15,"34":3,"35":15,"37":1,"38":14,"39":13,"40":2,"41":11,"42":35,"43":5,"44":16,"45":7,"46":2,"52":11,"53":9,"54":22,"60":1,"75":3}}],["выявлении",{"2":{"54":1}}],["выше",{"2":{"54":1}}],["вышедшая",{"2":{"53":1}}],["выгоде",{"2":{"54":1}}],["выглядят",{"2":{"40":1,"42":1}}],["выглядит",{"2":{"11":1,"16":1,"42":1,"54":2}}],["выглядеть",{"2":{"1":1}}],["выучить",{"2":{"53":1}}],["выделяет",{"2":{"44":1}}],["выделить",{"2":{"1":1}}],["выборе",{"2":{"53":1}}],["выбору",{"2":{"33":1}}],["выбрать",{"2":{"39":1}}],["выбирает",{"2":{"8":1}}],["выбирая",{"2":{"7":2}}],["вывод",{"2":{"39":1,"54":1}}],["вывода",{"2":{"19":1}}],["вывести",{"2":{"19":1}}],["выведенных",{"2":{"4":1}}],["вычисления",{"2":{"44":1,"45":1}}],["вычислительном",{"2":{"15":1}}],["вычисляемые",{"2":{"11":1}}],["выражаю",{"2":{"29":1}}],["выражение",{"2":{"18":1}}],["выражением",{"2":{"15":1}}],["выработайте",{"2":{"11":1}}],["выработки",{"2":{"7":1}}],["выходы",{"2":{"11":1}}],["выходящие",{"2":{"6":1}}],["выигрыш",{"2":{"7":1}}],["вы",{"2":{"6":1,"7":7,"8":1,"9":2,"10":4,"11":3,"20":1,"25":3,"27":3,"34":2,"35":1,"37":1,"38":1,"42":3,"47":1,"49":1,"53":1,"73":1}}],["высокой",{"2":{"6":1}}],["вытеснены",{"2":{"6":1}}],["выполнена",{"2":{"18":1}}],["выполнением",{"2":{"9":1}}],["выполнения",{"2":{"8":1,"9":3,"18":1,"19":1,"33":1,"41":1}}],["выполнить",{"2":{"45":1}}],["выполнит",{"2":{"9":2}}],["выполняет",{"2":{"54":1}}],["выполняется",{"2":{"3":1,"11":2,"16":1}}],["выполняют",{"2":{"42":1,"44":1,"53":1}}],["выполняются",{"2":{"8":1}}],["выполнять",{"2":{"15":1}}],["выписан",{"2":{"2":2}}],["вызвало",{"2":{"11":1}}],["вызвать",{"2":{"3":1}}],["вызывает",{"2":{"18":1}}],["вызываем",{"2":{"8":2}}],["вызываться",{"2":{"3":1}}],["вызов",{"2":{"8":1}}],["вызовет",{"2":{"5":1}}],["вызовов",{"2":{"1":1}}],["охватывает",{"2":{"75":1}}],["оффлайн",{"2":{"54":2}}],["официально",{"2":{"42":1}}],["официальной",{"2":{"18":1,"19":1}}],["официальная",{"2":{"42":1,"75":1}}],["официальные",{"2":{"39":1}}],["официальным",{"2":{"9":1}}],["ощущениям",{"2":{"54":1}}],["окном",{"2":{"45":1}}],["окружению",{"2":{"33":1}}],["окружения",{"2":{"33":1,"34":1}}],["окружений",{"2":{"33":1}}],["окружение",{"2":{"19":1}}],["окружает",{"2":{"10":2}}],["ом",{"2":{"44":1,"54":1}}],["ооп",{"2":{"42":1,"44":1,"45":3}}],["очищаются",{"2":{"19":1}}],["очевидно",{"2":{"9":1}}],["очевидным",{"2":{"8":1,"10":1}}],["очередь",{"2":{"8":1,"42":2}}],["очень",{"2":{"2":3,"3":2,"7":1,"8":1,"9":2,"11":1,"16":1,"34":1,"38":1,"39":4,"41":3,"42":1,"43":1,"44":1,"51":1,"52":1,"53":3,"54":3}}],["ожидает",{"2":{"14":1,"18":1}}],["ожидаемые",{"2":{"11":1}}],["оговорками",{"2":{"11":1}}],["ограничений",{"2":{"11":1,"42":1,"54":1}}],["ограничения",{"2":{"7":1,"52":1}}],["ограничивает",{"2":{"10":1}}],["огромные",{"2":{"7":1}}],["огромная",{"2":{"7":1}}],["ошибок",{"2":{"60":1}}],["ошибка",{"2":{"11":1,"45":1}}],["ошибки",{"2":{"4":1,"39":1}}],["ошибетесь",{"2":{"10":1}}],["ознакомьтесь",{"2":{"53":1}}],["ознакомились",{"2":{"9":1}}],["ознакомиться",{"2":{"2":1}}],["означает",{"2":{"7":2,"11":1}}],["ориентированных",{"2":{"45":1}}],["ориентированными",{"2":{"10":1}}],["ориентированного",{"2":{"44":1}}],["ориентированное",{"2":{"44":1}}],["ориентация",{"2":{"7":1}}],["организовывать",{"2":{"11":1}}],["организовать",{"2":{"5":1,"9":1,"11":1}}],["организация",{"2":{"11":1}}],["организации",{"2":{"8":1,"34":1,"44":1}}],["о",{"0":{"28":1,"44":1},"1":{"29":1},"2":{"6":1,"7":1,"8":2,"9":1,"10":1,"11":1,"29":2,"37":1,"41":2,"44":2,"54":2,"60":1}}],["одну",{"2":{"44":1}}],["одним",{"2":{"10":1,"11":1}}],["однако",{"2":{"7":2,"10":1,"11":5,"25":1,"26":1,"40":1,"41":1,"42":2,"52":1,"53":2,"54":2}}],["одного",{"2":{"42":2}}],["однозначно",{"2":{"39":1,"44":1}}],["одностраничные",{"2":{"29":1}}],["одном",{"2":{"10":1,"44":1}}],["однофайловый",{"2":{"10":1}}],["однофайловых",{"0":{"10":1},"2":{"8":1}}],["однофайловые",{"2":{"6":1,"27":1}}],["одной",{"2":{"7":3,"35":1,"42":1}}],["одно",{"2":{"7":1,"11":1,"33":1,"44":1}}],["одинаковыми",{"2":{"38":1}}],["один",{"2":{"2":2,"9":1,"10":1,"13":1,"19":1,"38":1,"42":4,"43":1,"54":1}}],["опционально",{"2":{"73":1}}],["опции",{"2":{"10":1,"11":1,"41":1}}],["оповестить",{"2":{"44":1}}],["оперативной",{"2":{"39":1}}],["операций",{"2":{"15":1}}],["описываются",{"2":{"75":1}}],["описывающие",{"2":{"11":1}}],["описывайте",{"2":{"51":1}}],["описан",{"2":{"33":1}}],["описания",{"2":{"11":1}}],["описание",{"2":{"10":1,"19":1,"54":1}}],["описаны",{"2":{"6":1}}],["описать",{"2":{"10":1}}],["оптимизация",{"2":{"54":1}}],["оптимизаций",{"2":{"9":1}}],["оптимизировать",{"2":{"9":1}}],["опытный",{"2":{"53":1}}],["опытных",{"2":{"5":1,"75":2}}],["опытному",{"2":{"53":1}}],["опыт",{"2":{"10":1,"53":1,"54":1,"74":2}}],["опыта",{"2":{"5":1,"8":1}}],["определённых",{"2":{"45":1}}],["определили",{"2":{"25":1}}],["определиться",{"2":{"7":1}}],["определять",{"2":{"11":1}}],["определяю",{"2":{"11":1}}],["определяют",{"2":{"8":2,"11":2}}],["определяющие",{"2":{"7":1,"10":2}}],["определяемого",{"2":{"15":1}}],["определяем",{"2":{"8":2}}],["определяете",{"2":{"10":1,"42":1}}],["определяется",{"2":{"2":1,"11":1}}],["определяет",{"2":{"2":1,"6":1,"7":1,"8":1,"10":1}}],["определено",{"2":{"19":1}}],["определен",{"2":{"11":1}}],["определение",{"2":{"42":1}}],["определению",{"2":{"7":1}}],["определения",{"2":{"7":1,"45":1}}],["определенного",{"2":{"41":1}}],["определенному",{"2":{"3":1,"7":1}}],["определенных",{"2":{"42":1}}],["определенные",{"2":{"7":1,"8":1,"11":1}}],["определенными",{"2":{"10":1,"11":2}}],["определенным",{"2":{"2":1,"3":1}}],["оно",{"2":{"7":1,"11":1,"13":1,"54":1}}],["она",{"2":{"7":2,"10":1,"13":1,"14":2,"17":1,"18":1,"19":2,"33":1,"41":2,"42":2,"44":1,"46":1}}],["они",{"2":{"6":1,"7":2,"15":3,"16":1,"19":3,"20":1,"21":1,"23":1,"24":1,"25":1,"33":1,"35":3,"38":1,"42":1,"44":2,"48":1,"53":2,"54":1}}],["он",{"2":{"2":3,"5":1,"6":1,"7":2,"10":2,"11":1,"19":2,"33":2,"38":1,"39":2,"41":1,"42":1,"43":1,"44":1,"45":1,"54":3}}],["онлайн",{"2":{"2":1,"38":1,"39":1,"45":1,"54":1}}],["обман",{"2":{"54":1}}],["обмену",{"2":{"11":1}}],["обхода",{"2":{"54":1}}],["обязательно",{"2":{"53":2}}],["обязательными",{"2":{"25":1}}],["обязательным",{"2":{"11":1}}],["обучающие",{"2":{"53":1}}],["обучение",{"2":{"52":1}}],["оболочку",{"2":{"54":1}}],["оболочки",{"2":{"45":1}}],["оборачивайте",{"2":{"52":1}}],["обоснования",{"2":{"45":1}}],["обозначаются",{"2":{"22":1}}],["облегчит",{"2":{"47":1}}],["облегчили",{"2":{"44":1}}],["области",{"2":{"11":2,"42":1}}],["обладает",{"2":{"7":1}}],["облачные",{"2":{"34":1}}],["облачных",{"2":{"3":1}}],["облачном",{"2":{"31":1,"34":1}}],["облачное",{"2":{"3":1}}],["обзор",{"2":{"40":1}}],["обычным",{"2":{"54":1}}],["обычными",{"2":{"35":1}}],["обычные",{"2":{"44":1}}],["обычных",{"2":{"25":1,"54":1}}],["обычный",{"2":{"10":2,"38":1}}],["обычное",{"2":{"54":1}}],["обычной",{"2":{"44":1}}],["обычном",{"2":{"11":1}}],["обычного",{"2":{"7":1,"10":1}}],["обычно",{"2":{"2":1,"5":1,"7":1,"9":1,"19":1,"41":1,"42":2,"43":1,"44":1,"53":1,"54":1}}],["общий",{"2":{"25":1}}],["общих",{"2":{"7":2}}],["общую",{"2":{"11":1,"29":1}}],["общепризнанная",{"2":{"75":1}}],["общее",{"2":{"74":1}}],["общей",{"2":{"7":1,"41":1}}],["общем",{"2":{"7":1}}],["общение",{"2":{"5":1,"57":1}}],["об",{"2":{"7":1,"9":1,"11":2,"17":1,"44":2,"53":1}}],["оберток",{"2":{"54":1}}],["обертки",{"0":{"47":1},"2":{"47":1,"54":1}}],["обертка",{"2":{"1":1,"19":1,"44":1}}],["обернуть",{"2":{"45":1}}],["обернутый",{"2":{"19":1}}],["обеспечат",{"2":{"34":1}}],["обеспечивающих",{"2":{"29":1}}],["обеспечивает",{"2":{"6":1,"11":1}}],["обеспечить",{"2":{"7":1}}],["обеспечения",{"2":{"5":1,"6":1,"7":1,"19":1,"29":1,"43":1}}],["объяснению",{"2":{"54":1}}],["объяснить",{"2":{"53":1}}],["объявить",{"2":{"10":1}}],["объявлять",{"2":{"11":1}}],["объявляют",{"2":{"11":2}}],["объявляем",{"2":{"8":1,"11":1}}],["объявляется",{"2":{"4":1,"11":1,"12":1}}],["объявлены",{"2":{"42":1}}],["объявлено",{"2":{"18":1}}],["объявленным",{"2":{"11":1}}],["объявленного",{"2":{"4":1}}],["объявление",{"2":{"4":1}}],["объективная",{"2":{"75":1}}],["объектным",{"2":{"45":1}}],["объектно",{"2":{"10":1,"44":1,"45":1}}],["объектов",{"2":{"25":1,"41":1}}],["объектом",{"2":{"11":1}}],["объекту",{"2":{"11":1}}],["объектах",{"2":{"41":1}}],["объекта",{"2":{"11":2,"14":1,"16":1,"41":2,"42":1,"44":1,"45":1}}],["объектами",{"2":{"41":1}}],["объектам",{"2":{"4":2}}],["объекты",{"2":{"11":2,"17":1,"22":1,"42":1,"44":1}}],["объекте",{"2":{"8":1,"41":1,"53":1}}],["объект",{"2":{"8":3,"10":1,"11":9,"41":2}}],["оба",{"2":{"3":1,"38":1}}],["обнаружились",{"2":{"54":1}}],["обнаружить",{"2":{"46":1}}],["обновится",{"2":{"44":1}}],["обновляться",{"2":{"43":1}}],["обновляет",{"2":{"2":1}}],["обновление",{"2":{"33":1,"44":1}}],["обновлении",{"2":{"13":1,"44":1}}],["обнуляет",{"2":{"2":1}}],["обрабатываются",{"2":{"53":1}}],["обрабатывать",{"2":{"35":1,"54":2}}],["обработка",{"2":{"45":1}}],["обработке",{"2":{"45":1}}],["обработки",{"2":{"7":1}}],["обработана",{"2":{"19":1}}],["образец",{"2":{"33":1}}],["образу",{"2":{"7":1}}],["образом",{"2":{"2":2,"3":1,"9":2,"16":2,"52":1}}],["обратите",{"2":{"8":3,"10":1,"11":1}}],["обратиться",{"2":{"19":1}}],["обратить",{"2":{"6":1,"7":1}}],["обратной",{"2":{"11":1}}],["обратно",{"2":{"2":1}}],["обращения",{"2":{"11":1,"54":1}}],["обращении",{"2":{"3":1,"54":2}}],["обращается",{"2":{"4":1}}],["обращаешься",{"2":{"3":1}}],["обращаться",{"2":{"3":1,"6":1,"53":1}}],["ос",{"2":{"39":1}}],["осущестляется",{"2":{"35":1}}],["осуществления",{"2":{"1":1}}],["остаться",{"2":{"42":1}}],["остальное",{"2":{"10":1,"39":1}}],["остается",{"2":{"1":1}}],["основательным",{"2":{"42":1}}],["основа",{"2":{"27":1}}],["основаны",{"2":{"7":1}}],["основ",{"2":{"26":1,"29":1}}],["основе",{"2":{"6":1,"7":1,"19":1,"42":1}}],["основная",{"2":{"19":1}}],["основное",{"2":{"42":1}}],["основной",{"2":{"39":1,"42":1,"51":1}}],["основном",{"2":{"19":1}}],["основного",{"2":{"1":1}}],["основных",{"2":{"43":1}}],["основным",{"2":{"8":1}}],["основные",{"2":{"2":1,"31":1,"43":1,"45":1,"75":1}}],["особенность",{"2":{"44":1}}],["особенно",{"2":{"5":1,"43":1}}],["отзывами",{"2":{"54":1}}],["отдавать",{"2":{"54":1}}],["отделить",{"2":{"44":1,"53":1}}],["отделит",{"2":{"10":1}}],["отдельного",{"2":{"44":1,"45":1}}],["отдельном",{"2":{"42":1}}],["отдельную",{"2":{"42":1}}],["отдельная",{"2":{"4":1}}],["отдельными",{"2":{"4":1}}],["отдельный",{"2":{"1":2,"10":1,"52":1}}],["отстает",{"2":{"53":1}}],["отслеживает",{"2":{"41":3}}],["отслеживания",{"2":{"16":1,"41":2}}],["отметить",{"2":{"52":1,"53":1}}],["отнимают",{"2":{"43":1}}],["относительно",{"2":{"54":1}}],["относится",{"2":{"11":4}}],["отношении",{"2":{"15":1}}],["отношению",{"2":{"11":1}}],["отовсюду",{"2":{"42":1}}],["отобразить",{"2":{"14":1,"19":1}}],["отображено",{"2":{"16":1}}],["отображение",{"2":{"42":1}}],["отображении",{"2":{"15":1,"19":2}}],["отображения",{"2":{"7":1,"8":1,"15":2,"16":1,"54":1}}],["отображающий",{"2":{"42":1}}],["отображаются",{"2":{"11":1}}],["отображать",{"2":{"35":1}}],["отображаемые",{"2":{"11":1}}],["отображается",{"2":{"7":1,"19":1}}],["откуда",{"2":{"44":1}}],["отката",{"2":{"33":1}}],["открытыми",{"2":{"53":1}}],["открытые",{"2":{"3":1}}],["открытом",{"2":{"53":1}}],["открывающем",{"2":{"12":1}}],["открывает",{"2":{"8":1}}],["отрисовкой",{"2":{"54":1}}],["отреагировать",{"2":{"18":1}}],["отражаться",{"2":{"13":1}}],["отражаются",{"2":{"6":1}}],["отличный",{"2":{"53":1}}],["отлично",{"2":{"44":1}}],["отличное",{"2":{"38":1}}],["отличия",{"2":{"44":1}}],["отличие",{"2":{"15":1,"41":1,"42":2,"44":1}}],["отличаются",{"2":{"41":1}}],["отличается",{"2":{"4":1,"43":1}}],["отвечающие",{"2":{"42":1,"44":1}}],["отвечает",{"2":{"2":1}}],["ответов",{"2":{"75":2}}],["ответах",{"2":{"75":1}}],["ответа",{"2":{"73":1}}],["ответственная",{"2":{"42":1}}],["ответить",{"2":{"7":1,"27":1}}],["ответ",{"2":{"4":2,"53":1,"73":1}}],["ответе",{"2":{"4":2}}],["отпечаток",{"2":{"2":1}}],["отправлять",{"2":{"54":1}}],["отправляемые",{"2":{"11":1}}],["отправляет",{"2":{"2":1}}],["отправка",{"2":{"1":1}}],["от",{"2":{"1":1,"2":1,"4":4,"6":2,"7":3,"8":1,"10":1,"11":3,"15":2,"26":1,"34":1,"35":1,"41":1,"42":1,"43":2,"44":3,"48":1,"52":1,"53":3,"74":1}}],["иерарxичную",{"2":{"52":1}}],["иерархичного",{"2":{"44":1}}],["иерархии",{"2":{"10":1,"42":2}}],["играет",{"2":{"44":1}}],["ивент",{"2":{"42":1}}],["ивенты",{"2":{"42":1}}],["ивентов",{"2":{"42":1}}],["иконка",{"2":{"54":1}}],["иконками",{"2":{"35":1}}],["иконку",{"2":{"35":2}}],["иконки",{"2":{"35":2,"38":1}}],["идею",{"2":{"54":1}}],["идеально",{"2":{"44":1}}],["идеале",{"2":{"42":1}}],["идет",{"2":{"39":1,"75":1}}],["идея",{"2":{"19":1,"42":1}}],["идентификатор",{"2":{"11":1}}],["идентификатором",{"2":{"8":2}}],["итоге",{"2":{"25":1,"39":1,"42":1}}],["итоговый",{"2":{"52":1}}],["итогов",{"0":{"26":1}}],["итого",{"2":{"2":1}}],["итераторе",{"2":{"16":1}}],["итак",{"2":{"7":1}}],["исправление",{"2":{"60":1}}],["испортит",{"2":{"43":1}}],["исполнения",{"2":{"8":1}}],["использовались",{"2":{"41":1}}],["использована",{"2":{"11":1,"19":1}}],["использован",{"2":{"7":1,"11":1}}],["использования",{"2":{"7":1,"8":1,"11":2,"41":1,"42":1,"53":1,"54":1}}],["использовании",{"2":{"5":1,"9":2,"11":1,"15":1}}],["использованием",{"2":{"35":1,"54":1}}],["использование",{"0":{"8":1},"1":{"9":1},"2":{"4":1,"7":1,"11":2,"19":1,"42":1,"44":1,"52":1,"54":1,"74":1}}],["использоваться",{"2":{"13":1}}],["использовать",{"2":{"3":1,"5":1,"7":7,"8":2,"9":2,"10":7,"11":4,"14":1,"17":1,"18":3,"19":2,"20":1,"25":2,"35":3,"38":1,"44":2,"45":3,"49":1}}],["используйте",{"0":{"47":1,"49":1,"50":1},"2":{"10":2,"15":2,"25":1,"41":2,"47":1,"52":1}}],["использую",{"2":{"8":1}}],["используют",{"2":{"6":1,"20":1}}],["используются",{"2":{"2":1,"7":1,"19":1,"27":1,"33":1,"38":1,"44":1}}],["использующего",{"2":{"4":1}}],["используя",{"2":{"3":1,"7":1,"9":1,"11":1,"33":1,"38":2,"73":1}}],["используете",{"2":{"47":1}}],["использует",{"2":{"33":1,"36":1,"38":1,"41":2,"42":1}}],["используется",{"2":{"2":1,"4":1,"6":1,"11":1,"16":1,"18":1,"33":1,"38":1,"41":1,"44":2,"53":1,"75":1}}],["используемые",{"2":{"9":1,"11":1,"12":1,"45":1}}],["используемый",{"2":{"2":1,"19":1}}],["используем",{"2":{"8":2,"10":2,"11":2,"13":1,"17":1}}],["используемая",{"2":{"7":1}}],["используемого",{"2":{"4":1,"7":1}}],["история",{"0":{"55":1},"1":{"56":1,"57":1,"58":1,"59":1,"60":1,"61":1,"62":1,"63":1,"64":1,"65":1}}],["исторически",{"2":{"42":1}}],["источники",{"2":{"53":1,"75":1}}],["источнику",{"2":{"4":1,"53":1}}],["источник",{"2":{"4":1}}],["источников",{"2":{"4":3}}],["исходного",{"2":{"39":1}}],["исходных",{"2":{"29":1}}],["исключительных",{"2":{"54":1}}],["исключением",{"2":{"42":1}}],["исключения",{"2":{"7":1}}],["искренне",{"2":{"29":1}}],["исчерпывающим",{"2":{"11":1}}],["их",{"2":{"3":1,"7":3,"9":2,"10":2,"11":1,"19":4,"25":1,"26":1,"33":1,"35":4,"40":1,"41":1,"42":5,"43":1,"44":3,"47":1,"48":1}}],["иных",{"2":{"54":1}}],["иная",{"2":{"44":1}}],["иначе",{"2":{"10":1,"18":1,"42":1}}],["ингридиент",{"2":{"43":1}}],["иного",{"2":{"52":1}}],["иногда",{"2":{"42":1,"45":1,"52":1}}],["ином",{"2":{"41":1}}],["иной",{"2":{"7":2,"33":1}}],["инструкции",{"2":{"33":1}}],["инструменты",{"2":{"29":1,"31":1,"54":1}}],["инструмент",{"2":{"8":1,"51":1}}],["интеграционные",{"2":{"43":1}}],["интеграция",{"2":{"31":1,"42":1}}],["интересными",{"2":{"75":1}}],["интересный",{"2":{"33":1}}],["интерактивности",{"2":{"44":1}}],["интернационализационным",{"2":{"41":1}}],["интернационализации",{"2":{"41":1}}],["интернационализация",{"2":{"41":1}}],["интернет",{"2":{"4":4,"6":1,"53":1}}],["интернете",{"2":{"3":1,"5":1,"52":1,"53":1}}],["интернета",{"2":{"3":1}}],["интерполированное",{"2":{"16":1}}],["интерполяцией",{"2":{"8":1,"16":1}}],["интерпретации",{"2":{"11":1}}],["интерпретировано",{"2":{"14":1}}],["интерпретировать",{"2":{"9":1,"10":1}}],["интерпретируются",{"2":{"8":1}}],["интерфейс",{"2":{"10":1}}],["интерфейсов",{"2":{"7":2}}],["интерфейса",{"2":{"3":1,"10":2,"17":1,"29":1,"43":1}}],["инкапсулировали",{"2":{"44":1}}],["инкапсулирует",{"2":{"10":1,"44":1}}],["инкапсуляции",{"2":{"25":1}}],["инженеру",{"2":{"31":1}}],["инженерии",{"2":{"6":1,"7":1}}],["инжектируемых",{"2":{"22":1}}],["инжектируемые",{"2":{"22":1}}],["индексируется",{"2":{"54":1}}],["индексации",{"2":{"54":1}}],["индексы",{"2":{"16":1}}],["индекс",{"2":{"16":1}}],["индивидуально",{"2":{"2":1}}],["инвертирует",{"2":{"7":1}}],["инициирующей",{"2":{"4":1}}],["инета",{"2":{"3":1}}],["информационной",{"2":{"33":1}}],["информацию",{"2":{"19":1,"53":1}}],["информацией",{"2":{"10":1,"33":1}}],["информация",{"2":{"2":1,"75":1}}],["информации",{"2":{"2":1,"29":1,"53":1,"75":2}}],["изначально",{"2":{"45":1,"54":1}}],["избегайте",{"0":{"46":1}}],["избегаемы",{"2":{"41":1}}],["избежать",{"2":{"44":1}}],["изобретено",{"2":{"44":1}}],["изображения",{"2":{"35":2}}],["изобразить",{"2":{"9":1}}],["изощренных",{"2":{"39":1}}],["изолированные",{"2":{"9":1}}],["извлекаем",{"2":{"8":1}}],["изучайте",{"2":{"53":1}}],["изучать",{"2":{"7":1,"57":1}}],["изучения",{"2":{"26":1,"53":2}}],["изучение",{"0":{"12":1,"53":1},"1":{"13":1,"14":1,"15":1,"16":1,"17":1,"18":1},"2":{"49":1}}],["изучить",{"2":{"7":1,"33":1}}],["изучим",{"2":{"6":1}}],["изменится",{"2":{"19":1,"39":1}}],["изменить",{"2":{"11":1,"15":1,"44":1,"45":1,"52":1}}],["изменилось",{"2":{"11":1}}],["изменился",{"2":{"2":1}}],["изменено",{"0":{"57":1,"60":1,"63":1},"2":{"7":1}}],["изменении",{"2":{"7":1,"44":2}}],["изменений",{"0":{"55":1},"1":{"56":1,"57":1,"58":1,"59":1,"60":1,"61":1,"62":1,"63":1,"64":1,"65":1},"2":{"7":1,"16":1,"31":1,"41":1,"73":1}}],["изменениях",{"2":{"42":1}}],["изменениями",{"2":{"39":1,"44":2}}],["изменения",{"2":{"6":3,"41":2,"60":1}}],["изменяется",{"2":{"7":2}}],["изменяться",{"2":{"44":1}}],["изменять",{"2":{"6":1,"11":1,"44":1}}],["изменяющие",{"2":{"6":1}}],["из",{"2":{"2":1,"3":1,"5":1,"6":3,"7":5,"8":2,"9":2,"10":2,"11":7,"12":1,"14":1,"15":2,"16":1,"19":1,"33":4,"35":5,"36":1,"38":2,"41":1,"42":5,"43":1,"44":1,"45":1,"49":1,"53":1,"54":1}}],["имитирует",{"2":{"43":1}}],["имя",{"2":{"11":2,"25":1,"33":1,"73":1}}],["импорт",{"2":{"42":1}}],["импортируя",{"2":{"19":1}}],["импортируется",{"2":{"11":1}}],["импортирует",{"2":{"9":1}}],["импортируем",{"2":{"8":1,"11":2}}],["импортировать",{"2":{"7":1,"8":1,"9":1,"11":2,"35":2,"37":1}}],["импортированы",{"2":{"35":1}}],["импортирован",{"2":{"7":1}}],["импорта",{"2":{"7":1,"36":1}}],["им",{"2":{"2":1,"52":1,"54":1}}],["имеем",{"2":{"11":1}}],["имеет",{"2":{"2":4,"3":1,"5":1,"8":1,"11":1,"14":1,"16":1,"44":2}}],["имеют",{"2":{"10":1,"11":2,"12":1,"42":1,"52":1}}],["имели",{"2":{"9":1}}],["иметь",{"2":{"6":1,"11":1,"14":1,"25":1,"39":1,"42":1}}],["имени",{"2":{"35":1}}],["именами",{"2":{"35":1}}],["имена",{"0":{"23":1,"24":1},"2":{"4":1,"8":1}}],["именем",{"2":{"4":1,"37":1}}],["именно",{"2":{"2":1,"6":2,"9":1,"10":1,"11":1,"42":1,"44":1,"53":2}}],["или",{"0":{"5":1},"2":{"1":2,"2":2,"3":1,"4":4,"5":2,"7":9,"8":1,"9":1,"10":1,"11":6,"12":1,"14":4,"15":3,"16":1,"17":1,"18":1,"19":3,"34":1,"35":1,"37":1,"38":2,"41":2,"42":11,"44":2,"45":1,"46":1,"47":2,"52":3,"53":5,"54":3,"73":3}}],["и",{"0":{"2":1,"11":1,"15":1,"16":1,"18":1,"21":1,"23":1,"24":1,"38":1,"47":1,"50":1,"52":1,"54":1,"74":1},"2":{"1":3,"2":23,"3":16,"4":3,"5":4,"6":24,"7":29,"8":14,"9":9,"10":15,"11":33,"12":1,"15":3,"16":1,"17":4,"18":4,"19":9,"20":2,"21":1,"22":4,"23":1,"24":1,"25":5,"26":4,"27":1,"29":17,"31":3,"33":18,"34":5,"35":7,"38":8,"39":20,"40":3,"41":14,"42":30,"43":6,"44":24,"45":14,"46":1,"48":5,"49":4,"50":2,"51":2,"52":22,"53":25,"54":30,"60":2,"73":1,"74":3,"75":7}}],["убить",{"2":{"53":1}}],["убедиться",{"2":{"27":1}}],["учебник",{"2":{"53":2}}],["учитывают",{"2":{"54":1}}],["учитывать",{"2":{"38":1}}],["учит",{"2":{"53":2}}],["учителем",{"2":{"53":1}}],["учиться",{"2":{"45":1}}],["ухудшает",{"2":{"52":1}}],["укоряет",{"2":{"52":1}}],["указать",{"2":{"44":1}}],["указателей",{"2":{"11":1}}],["указателями",{"2":{"11":1}}],["указана",{"2":{"4":1}}],["указанную",{"2":{"4":1}}],["указывает",{"2":{"8":1,"11":2}}],["уязвимость",{"2":{"46":1}}],["уязвимости",{"2":{"42":1}}],["утилитами",{"2":{"47":1}}],["утилит",{"0":{"47":1}}],["утилиты",{"2":{"42":1,"45":1}}],["утечку",{"2":{"10":1}}],["умирает",{"2":{"42":1}}],["умение",{"2":{"53":1}}],["умении",{"2":{"52":1}}],["умел",{"2":{"53":1}}],["умело",{"2":{"6":1}}],["уме",{"2":{"27":1}}],["уж",{"2":{"25":1}}],["уже",{"2":{"3":1,"5":1,"10":1,"11":2,"25":1,"33":1,"41":1,"43":1,"44":1,"45":1,"53":1,"54":2}}],["улучшайте",{"2":{"53":1}}],["улучшая",{"2":{"48":1}}],["улучшение",{"2":{"41":1}}],["улучшения",{"2":{"7":1}}],["улучшить",{"2":{"54":1}}],["улучшит",{"2":{"15":1}}],["узнаем",{"2":{"29":3}}],["узнаете",{"2":{"11":1}}],["узнать",{"2":{"8":1}}],["уникален",{"2":{"42":1}}],["уникальный",{"2":{"16":1}}],["универсальный",{"2":{"35":2}}],["унификации",{"2":{"5":1}}],["унаследован",{"2":{"11":1}}],["упомянутый",{"2":{"10":1}}],["упакует",{"2":{"9":1}}],["упакован",{"2":{"9":1}}],["упростит",{"2":{"47":1}}],["упрощенную",{"2":{"54":1}}],["упрощенно",{"2":{"44":1}}],["упрощенное",{"2":{"9":1}}],["упрощает",{"2":{"5":1,"33":1}}],["управляемое",{"2":{"54":1}}],["управлять",{"2":{"8":1,"10":1,"29":1,"44":2}}],["управления",{"2":{"42":3}}],["управлению",{"2":{"7":1}}],["управление",{"2":{"7":1,"11":1,"29":1}}],["увидели",{"2":{"54":1}}],["увидим",{"2":{"9":1,"11":1,"18":2}}],["увидите",{"2":{"7":1}}],["уверенным",{"2":{"53":1}}],["увеличивает",{"2":{"35":1,"46":1}}],["увеличивается",{"2":{"35":1}}],["увеличения",{"2":{"6":1}}],["ускоряет",{"2":{"52":1}}],["ускорить",{"2":{"45":1,"52":1}}],["ускорению",{"2":{"11":1}}],["усложняться",{"2":{"54":1}}],["условий",{"2":{"35":1}}],["условиях",{"2":{"7":1}}],["условные",{"2":{"15":1}}],["услуг",{"2":{"45":1}}],["успешности",{"2":{"45":1}}],["успевает",{"2":{"39":1}}],["успехов",{"2":{"29":1}}],["устареть",{"2":{"52":1}}],["устареет",{"2":{"46":1}}],["устаревает",{"2":{"42":1}}],["устаревшие",{"2":{"39":1}}],["устаревший",{"2":{"38":1}}],["устарели",{"2":{"53":1}}],["устарел",{"2":{"40":1,"42":1}}],["устанавливается",{"2":{"38":1}}],["устанавливаться",{"2":{"6":1}}],["установлена",{"2":{"54":1}}],["установленную",{"2":{"33":1}}],["установите",{"2":{"53":1}}],["установить",{"2":{"3":1,"8":1,"34":1}}],["установке",{"2":{"54":2}}],["установкой",{"2":{"11":1,"29":1}}],["установка",{"2":{"9":1,"10":1,"11":1,"29":1}}],["установки",{"2":{"4":1,"33":1,"39":1,"41":1}}],["усилия",{"2":{"7":1}}],["уровень",{"2":{"2":2,"45":1,"51":1,"75":1}}],["уровне",{"2":{"41":1,"43":1,"53":2}}],["уровнем",{"2":{"1":1}}],["уровня",{"2":{"2":1,"44":1,"53":1}}],["у",{"2":{"2":2,"3":4,"5":1,"10":2,"11":1,"25":1,"27":1,"33":1,"41":1,"42":4,"45":1,"52":1,"53":1,"54":2}}],["удаленном",{"2":{"33":1}}],["удаленный",{"2":{"33":4}}],["удаление",{"2":{"41":1}}],["удалении",{"2":{"19":1}}],["удаления",{"2":{"2":1}}],["удаляют",{"2":{"15":1}}],["удаляя",{"2":{"14":1}}],["удобство",{"2":{"74":2}}],["удобства",{"2":{"2":1,"19":1,"74":1}}],["удобен",{"2":{"5":1}}],["удобней",{"2":{"42":1,"52":1}}],["удобнее",{"2":{"5":1}}],["удобную",{"0":{"40":1},"2":{"39":1,"52":1}}],["удобная",{"2":{"45":1}}],["удобна",{"2":{"39":1}}],["удобны",{"2":{"34":1}}],["удобный",{"2":{"33":1,"39":1,"41":1,"51":1,"53":1}}],["удобным",{"2":{"25":1}}],["удобных",{"2":{"18":1}}],["удобно",{"2":{"1":2,"11":1,"16":1,"39":1,"42":2,"52":1}}],["удостовериться",{"2":{"2":1}}],["удостоверяется",{"2":{"2":2}}],["кто",{"2":{"43":1,"44":1,"54":1}}],["курсов",{"2":{"53":1}}],["курс",{"2":{"45":1,"53":1}}],["кучу",{"2":{"44":1}}],["куча",{"2":{"42":1}}],["кучи",{"2":{"41":1}}],["кулер",{"2":{"39":1}}],["куда",{"2":{"39":1,"44":1}}],["купить",{"2":{"34":1}}],["куку",{"2":{"2":1}}],["кэширование",{"2":{"54":1}}],["кэширования",{"2":{"33":1}}],["кэширующий",{"2":{"42":1}}],["кэше",{"2":{"19":1}}],["книжка",{"2":{"53":1}}],["книга",{"2":{"53":2}}],["книги",{"2":{"9":1,"12":1,"29":1,"53":1}}],["книге",{"0":{"20":1,"28":1},"1":{"21":1,"22":1,"23":1,"24":1,"25":1,"29":1},"2":{"6":3,"7":1,"11":2,"18":1,"20":2,"26":1,"29":1}}],["кнопку",{"2":{"19":1,"45":1}}],["кнопкам",{"2":{"45":1}}],["кнопка",{"2":{"18":1}}],["кнопке",{"2":{"18":1}}],["кнопкой",{"2":{"10":1}}],["кем",{"2":{"7":1}}],["ключу",{"2":{"41":1}}],["ключ",{"2":{"33":1}}],["ключевыми",{"2":{"29":1}}],["ключевое",{"2":{"11":2}}],["ключевой",{"2":{"7":1}}],["клавиатуры",{"2":{"39":1}}],["клавиатуру",{"2":{"39":1}}],["класть",{"2":{"35":1,"42":1}}],["классами",{"2":{"45":1}}],["класс",{"2":{"35":1}}],["классу",{"2":{"11":1}}],["классический",{"2":{"11":1,"53":1}}],["классов",{"0":{"23":1},"2":{"7":2,"19":1,"45":1,"52":1}}],["кладет",{"2":{"2":1}}],["клиентом",{"2":{"54":1}}],["клиент",{"2":{"5":2,"39":2}}],["клиентам",{"2":{"4":1}}],["клиента",{"2":{"4":3,"54":1}}],["кроулером",{"2":{"54":1}}],["кроме",{"2":{"8":1,"11":3,"18":1,"33":3,"38":1,"42":2,"44":1,"45":1,"46":1,"53":1,"54":2}}],["кругозор",{"2":{"53":1}}],["крутятся",{"2":{"39":1}}],["крупного",{"2":{"8":1}}],["крупных",{"2":{"3":1}}],["красиво",{"2":{"54":1}}],["красивую",{"2":{"52":1}}],["кратко",{"2":{"8":1,"27":1}}],["кражей",{"2":{"2":1}}],["критичных",{"2":{"2":1}}],["криптография",{"2":{"2":1}}],["казаться",{"2":{"54":1}}],["кабинета",{"2":{"45":1}}],["каталога",{"2":{"45":1}}],["категориями",{"2":{"45":1}}],["категорией",{"2":{"42":1}}],["кандидатов",{"2":{"44":1}}],["канала",{"0":{"0":1},"1":{"1":1}}],["капотом",{"2":{"44":1}}],["картинок",{"2":{"37":1}}],["картинками",{"2":{"54":1}}],["картинка",{"2":{"37":1}}],["картинки",{"2":{"35":6,"54":2}}],["картинке",{"2":{"13":1,"54":1}}],["карьере",{"2":{"29":1}}],["качества",{"2":{"37":1}}],["качество",{"2":{"29":1,"52":1,"74":2}}],["качественные",{"2":{"53":1}}],["качественный",{"2":{"39":1}}],["качестве",{"2":{"8":1,"11":1,"54":1,"75":1}}],["кажется",{"2":{"11":1}}],["каждым",{"2":{"54":1}}],["каждый",{"2":{"2":2,"7":1,"11":2,"19":1,"38":1,"42":3,"44":1,"45":1}}],["каждая",{"2":{"16":1,"42":1}}],["каждую",{"2":{"10":1}}],["каждое",{"2":{"11":1,"23":1}}],["каждого",{"2":{"7":1,"10":1,"19":1,"33":2,"38":1}}],["каждому",{"2":{"2":1,"33":1}}],["каждом",{"2":{"2":1,"7":1,"13":1,"44":1,"45":1}}],["камне",{"2":{"7":1}}],["касается",{"2":{"42":1}}],["кастомные",{"2":{"52":1}}],["кастомных",{"2":{"45":1}}],["кастомными",{"2":{"38":1}}],["кастомный",{"2":{"34":1}}],["кастомную",{"2":{"3":1}}],["каскадные",{"2":{"6":1}}],["какая",{"2":{"39":1}}],["какую",{"2":{"8":1}}],["каких",{"2":{"7":1,"54":1}}],["какие",{"2":{"6":1,"9":1,"27":1,"41":1,"44":1,"53":2}}],["какой",{"2":{"7":1,"8":1,"37":1,"39":1,"46":1,"47":1}}],["какое",{"2":{"6":1}}],["каком",{"2":{"3":1}}],["как",{"2":{"2":5,"3":3,"4":1,"5":4,"6":1,"7":8,"8":2,"9":6,"10":4,"11":13,"14":1,"15":2,"17":2,"19":1,"25":1,"29":4,"33":2,"35":3,"37":1,"38":3,"39":3,"41":5,"42":7,"43":1,"44":1,"51":2,"52":4,"53":3,"54":9,"57":1,"75":2}}],["к",{"2":{"1":1,"2":4,"3":7,"4":6,"6":3,"7":1,"11":19,"13":1,"17":1,"19":3,"27":1,"34":2,"35":1,"39":4,"42":2,"45":1,"49":1,"53":3,"54":3}}],["коврике",{"2":{"54":1}}],["коп",{"2":{"44":1}}],["копирования",{"2":{"38":1}}],["копий",{"2":{"16":1}}],["ко",{"2":{"42":1,"45":1}}],["корректировку",{"2":{"73":1}}],["коридоре",{"2":{"54":1}}],["короткий",{"2":{"53":1}}],["короткоживущий",{"2":{"2":1}}],["корень",{"2":{"33":1}}],["координация",{"2":{"7":1}}],["координации",{"2":{"7":1}}],["координировать",{"2":{"7":1}}],["коллеги",{"2":{"53":1}}],["коллекций",{"2":{"16":1}}],["коллекция",{"2":{"7":1}}],["колоночной",{"2":{"52":1}}],["колоночным",{"2":{"49":1}}],["количеством",{"2":{"41":1,"43":1}}],["количество",{"2":{"6":1}}],["количества",{"2":{"2":1}}],["которую",{"2":{"8":1,"33":1,"42":1,"53":1}}],["которое",{"2":{"18":1,"43":1}}],["которого",{"2":{"11":4}}],["которой",{"2":{"8":1}}],["которому",{"2":{"16":1}}],["котором",{"2":{"6":2,"10":1,"34":1,"41":1,"42":1}}],["которая",{"2":{"5":1,"7":1,"8":1,"11":1,"14":1,"42":2,"44":1,"52":1,"53":1,"54":1}}],["которых",{"2":{"6":1,"7":1,"9":1,"11":1,"16":1,"42":1,"44":1,"54":1}}],["которыми",{"2":{"25":1,"42":1}}],["которым",{"2":{"4":1,"11":1,"25":1,"52":1}}],["который",{"2":{"3":2,"4":2,"6":1,"7":2,"8":2,"9":1,"10":4,"11":4,"19":2,"20":1,"35":1,"38":1,"42":3,"43":1,"44":1,"54":2}}],["которые",{"2":{"2":1,"4":1,"6":5,"8":2,"9":3,"10":1,"11":4,"12":1,"15":1,"18":3,"19":3,"20":1,"34":1,"35":1,"52":1,"53":1,"54":2}}],["консистентности",{"2":{"42":1}}],["конструкции",{"2":{"42":1}}],["конструкторы",{"2":{"22":1}}],["конструктора",{"2":{"11":1}}],["конструктор",{"2":{"8":1,"11":3}}],["константные",{"2":{"22":1}}],["константе",{"2":{"11":1}}],["константа",{"2":{"11":2}}],["константы",{"0":{"22":1},"2":{"11":2}}],["константу",{"2":{"11":2}}],["конфликтуют",{"2":{"39":1}}],["конфигурациях",{"2":{"54":1}}],["конфигурация",{"2":{"39":1}}],["конфигурационного",{"2":{"33":1}}],["конфигом",{"2":{"39":1}}],["конфиге",{"2":{"38":1}}],["контакты",{"2":{"73":1}}],["контрагентами",{"2":{"44":1}}],["контролирует",{"2":{"41":1,"44":1}}],["контроль",{"2":{"11":2,"29":1}}],["контент",{"2":{"54":1}}],["контентом",{"2":{"54":2}}],["контента",{"2":{"6":1,"8":1,"19":1,"54":1}}],["контекста",{"2":{"11":1}}],["конечный",{"2":{"11":1}}],["конечного",{"2":{"29":1}}],["конечном",{"2":{"25":1}}],["конечно",{"2":{"5":1,"45":1,"54":1}}],["концептуальные",{"2":{"29":1}}],["концепцию",{"2":{"11":1}}],["концепции",{"2":{"9":1,"45":1}}],["концепцией",{"2":{"7":1}}],["концепций",{"2":{"6":1}}],["концепция",{"2":{"6":1,"7":1,"11":1}}],["конце",{"2":{"8":1}}],["концу",{"2":{"6":1}}],["конкретном",{"2":{"7":1}}],["конкретное",{"2":{"4":1,"11":1}}],["конкретные",{"2":{"7":1}}],["конкурировать",{"2":{"6":1}}],["конкурировали",{"2":{"6":1}}],["кончается",{"2":{"2":2}}],["кончился",{"2":{"2":1}}],["комфорту",{"2":{"54":1}}],["комфортно",{"2":{"42":1}}],["комфортней",{"2":{"39":1}}],["комментирование",{"2":{"74":1}}],["комментариями",{"2":{"2":1}}],["коммерческих",{"2":{"33":1}}],["командой",{"2":{"54":1}}],["командной",{"2":{"38":1}}],["команд",{"2":{"33":1,"44":1}}],["команда",{"2":{"25":1}}],["команде",{"2":{"7":1,"25":1}}],["команды",{"2":{"7":1}}],["компетентные",{"2":{"53":1}}],["компаниях",{"2":{"53":1}}],["компании",{"2":{"2":1}}],["компьютера",{"2":{"39":1}}],["компьютере",{"2":{"38":1,"54":1}}],["композаблы",{"2":{"45":1}}],["композабле",{"2":{"42":1}}],["композаблом",{"2":{"42":1}}],["композабл",{"2":{"41":1,"42":4,"45":1}}],["композиция",{"2":{"9":1,"10":2,"17":1,"29":1}}],["компонентно",{"2":{"44":1}}],["компонентом",{"2":{"42":2}}],["компонентов",{"0":{"10":1,"23":1},"2":{"6":1,"8":1,"9":2,"10":2,"11":2,"18":2,"19":5,"26":1,"29":2,"40":1,"42":1}}],["компоненту",{"2":{"11":1}}],["компонентами",{"0":{"47":1},"2":{"10":1,"11":2,"17":1}}],["компонента",{"2":{"9":1,"10":4,"11":7,"19":4,"42":4,"45":1,"52":2}}],["компонентах",{"2":{"1":1,"10":1,"11":1}}],["компонент",{"2":{"8":2,"9":1,"10":3,"11":4,"19":7,"35":1,"37":1,"41":1,"42":7,"44":3,"47":1,"52":2}}],["компоненты",{"0":{"19":1},"2":{"6":1,"9":2,"10":3,"11":2,"17":1,"19":2,"27":1,"42":2,"44":2,"45":1,"47":2,"48":1,"52":3}}],["компоненте",{"2":{"1":1,"42":3}}],["компиляция",{"2":{"8":1}}],["компромиссы",{"2":{"7":1}}],["компромисс",{"2":{"7":2}}],["компромиссами",{"2":{"7":1}}],["комплексное",{"2":{"2":1}}],["кому",{"2":{"2":1}}],["когда",{"2":{"2":4,"3":1,"4":1,"6":1,"7":8,"8":1,"11":3,"14":1,"15":1,"17":2,"18":1,"19":4,"35":1,"41":2,"42":3,"52":1,"53":1,"54":3}}],["кодироваться",{"2":{"35":1}}],["кодовых",{"2":{"20":1,"26":1}}],["кодовые",{"0":{"20":1},"1":{"21":1,"22":1,"23":1,"24":1,"25":1},"2":{"25":1}}],["кодом",{"2":{"3":1,"26":1}}],["кодера",{"2":{"39":1}}],["коде",{"2":{"11":3,"25":1,"27":1,"44":1,"45":1,"52":1}}],["кода",{"2":{"1":2,"3":1,"7":2,"8":1,"9":1,"10":2,"11":6,"25":1,"29":2,"31":2,"33":1,"39":1,"44":3,"46":1,"48":2,"52":2,"53":1,"54":2,"74":1}}],["код",{"2":{"1":2,"4":1,"5":1,"7":1,"8":2,"9":2,"11":5,"20":1,"25":1,"29":1,"33":1,"39":1,"41":1,"48":1,"53":2}}],["сюда",{"2":{"74":1}}],["сгенеренные",{"2":{"54":1}}],["сгенерировать",{"2":{"34":1}}],["сэкономить",{"2":{"52":1}}],["сэкономит",{"2":{"46":1}}],["схожи",{"2":{"44":1}}],["сжатие",{"2":{"37":1}}],["смысл",{"2":{"54":1}}],["смысле",{"2":{"15":1,"42":1}}],["смартфоне",{"2":{"54":1}}],["смартфона",{"2":{"54":1}}],["сможете",{"2":{"49":1}}],["смонтирован",{"2":{"11":1}}],["смонтировать",{"2":{"8":1}}],["смену",{"2":{"44":1}}],["смешивает",{"2":{"44":1}}],["см",{"2":{"19":1}}],["ссылки",{"2":{"22":3,"38":1}}],["ссылке",{"2":{"11":1}}],["ссылаемой",{"2":{"17":1}}],["ссылаться",{"2":{"11":2,"16":1}}],["сделанный",{"2":{"54":1}}],["сделали",{"2":{"54":1}}],["сделал",{"2":{"49":1}}],["сделайте",{"2":{"47":1,"53":2}}],["сделав",{"2":{"46":1}}],["сделает",{"2":{"10":1,"25":1}}],["сделать",{"2":{"2":2,"3":3,"34":1,"41":1,"42":1,"44":1,"45":1,"54":1}}],["сборок",{"2":{"38":1}}],["сборщиком",{"2":{"9":1,"10":1}}],["сборщики",{"2":{"9":1}}],["сборщика",{"0":{"9":1},"2":{"9":2,"10":1,"11":1,"38":3}}],["сборщик",{"2":{"8":1,"9":1,"10":1,"11":1,"38":3}}],["сборка",{"0":{"38":1},"2":{"8":1,"33":1,"38":1}}],["сборки",{"2":{"8":1}}],["сценария",{"2":{"8":1}}],["сценарий",{"2":{"2":1}}],["скилл",{"2":{"53":1}}],["скачать",{"2":{"53":1}}],["скачивает",{"2":{"33":1}}],["сказать",{"2":{"44":1}}],["склонений",{"2":{"41":1}}],["скрыто",{"2":{"15":1}}],["скрытия",{"2":{"15":1}}],["скрываться",{"2":{"15":1}}],["скрывают",{"2":{"15":1}}],["скрывая",{"2":{"15":1}}],["скрывает",{"2":{"14":1}}],["скромное",{"2":{"8":2}}],["скрипта",{"2":{"54":1}}],["скриптами",{"2":{"54":1}}],["скриптам",{"2":{"43":1}}],["скрипт",{"2":{"3":2}}],["скопируйте",{"2":{"46":1}}],["скорости",{"2":{"54":1}}],["скорость",{"2":{"35":1}}],["скоростью",{"2":{"7":1}}],["скорей",{"2":{"42":1}}],["сколько",{"2":{"16":1,"38":1}}],["скобки",{"2":{"8":1}}],["считать",{"2":{"45":1}}],["считает",{"2":{"42":1}}],["считается",{"2":{"4":1,"53":1}}],["считывать",{"2":{"42":1}}],["счет",{"2":{"7":1}}],["снять",{"2":{"54":1}}],["сне",{"2":{"41":1}}],["снова",{"2":{"19":1}}],["снизить",{"2":{"52":1}}],["снижает",{"2":{"54":1}}],["снижают",{"2":{"43":1}}],["снижением",{"2":{"7":1}}],["снимать",{"2":{"2":1}}],["снимаются",{"2":{"2":1}}],["сначала",{"2":{"6":1,"8":1,"9":1,"10":1,"11":1}}],["субъективное",{"2":{"75":1}}],["сущности",{"2":{"44":1}}],["сущность",{"2":{"42":1}}],["существенные",{"2":{"44":1}}],["существующего",{"2":{"53":1}}],["существуют",{"2":{"7":2,"19":1,"44":1}}],["существует",{"2":{"6":1,"7":2,"8":1,"11":2,"40":1}}],["сути",{"2":{"2":1,"3":1,"41":1,"42":1}}],["семантические",{"2":{"50":1}}],["секунд",{"2":{"39":1}}],["секции",{"2":{"10":1,"11":1}}],["сейчас",{"2":{"9":1,"26":1,"34":1,"53":1}}],["себе",{"2":{"9":1,"44":1}}],["себя",{"2":{"6":2,"7":1,"9":1,"15":1,"16":1,"18":1,"35":1,"42":1,"44":2,"53":1}}],["селекторы",{"2":{"8":1}}],["сети",{"2":{"8":1}}],["сетями",{"2":{"7":1}}],["сертификация",{"2":{"53":1}}],["сертификат",{"2":{"34":3}}],["сертификаты",{"2":{"34":1}}],["серая",{"2":{"7":1}}],["сервиcа",{"2":{"3":1}}],["сервиса",{"2":{"3":2,"5":1,"54":1}}],["сервисов",{"2":{"3":3}}],["сервисы",{"2":{"2":1,"3":1,"25":1,"39":1,"42":1,"53":1}}],["сервис",{"0":{"1":1},"2":{"1":1,"3":1,"44":1,"53":1,"74":1}}],["серверному",{"2":{"54":1}}],["серверных",{"2":{"5":1}}],["сервера",{"2":{"4":1,"29":1,"35":1,"41":1,"54":6}}],["сервере",{"2":{"3":1,"4":2,"31":1,"33":2,"34":1,"54":1,"59":1,"60":1}}],["сервером",{"2":{"3":1,"54":1}}],["сервер",{"2":{"1":1,"3":2,"4":2,"5":2,"33":2,"34":1,"39":1,"53":1,"54":3}}],["сегодня",{"2":{"6":2}}],["ситуациях",{"2":{"45":1}}],["ситуация",{"2":{"44":1}}],["ситуацией",{"2":{"42":1}}],["ситуации",{"2":{"7":1}}],["синглтон",{"2":{"42":1}}],["синтез",{"2":{"42":1}}],["синтаксисом",{"2":{"11":1,"19":1}}],["синтаксисы",{"2":{"10":1}}],["синтаксис",{"2":{"10":2,"11":6}}],["синтаксиса",{"2":{"6":1,"10":1,"29":1}}],["синхронизацию",{"2":{"17":1}}],["сих",{"2":{"9":1,"18":1}}],["сильное",{"2":{"37":1}}],["сильно",{"2":{"5":1,"11":2,"38":1,"41":1,"43":1,"44":2,"47":1,"52":1,"53":2,"54":1}}],["систем",{"2":{"44":1}}],["системе",{"2":{"44":1}}],["системы",{"2":{"2":2,"44":1,"45":1,"52":1}}],["систему",{"2":{"2":1}}],["системами",{"2":{"44":1}}],["система",{"2":{"2":2}}],["сверху",{"2":{"75":1}}],["сваливает",{"2":{"44":1}}],["своя",{"2":{"33":1,"41":1}}],["своих",{"2":{"54":1}}],["своим",{"2":{"39":1,"42":1}}],["своими",{"2":{"33":1}}],["свои",{"2":{"25":1,"38":2,"42":1,"44":1,"45":1,"47":1,"52":2}}],["свободу",{"2":{"11":1}}],["свою",{"2":{"8":1,"10":1,"42":2,"45":1,"46":1}}],["своем",{"2":{"52":1}}],["своему",{"2":{"38":2}}],["свое",{"2":{"15":1,"53":1}}],["своей",{"2":{"3":1,"25":1,"54":1}}],["своего",{"2":{"3":2,"5":1,"54":1}}],["свойствами",{"2":{"54":1}}],["свойства",{"2":{"11":1}}],["свой",{"0":{"3":1},"2":{"3":2,"10":1,"11":2,"33":1,"34":2,"53":3}}],["связыванием",{"2":{"17":1}}],["связывает",{"2":{"13":1,"18":1}}],["связь",{"2":{"5":1}}],["связанность",{"2":{"45":1}}],["связанные",{"2":{"45":1}}],["связанными",{"2":{"11":1}}],["связанных",{"2":{"6":1}}],["связанный",{"2":{"1":1}}],["связаны",{"2":{"2":1,"45":1}}],["связи",{"0":{"0":1},"1":{"1":1},"2":{"1":2,"11":1,"34":1}}],["среднем",{"2":{"53":1}}],["среднего",{"2":{"7":2,"53":1}}],["среди",{"2":{"43":1}}],["средства",{"2":{"43":1,"52":1}}],["средствами",{"2":{"41":1,"52":1}}],["средство",{"2":{"38":1}}],["среда",{"2":{"39":1}}],["сравнится",{"2":{"54":1}}],["сравниваются",{"2":{"52":1}}],["сравним",{"2":{"11":2}}],["сравнении",{"2":{"7":1}}],["сравнению",{"2":{"6":1}}],["сразу",{"2":{"2":1,"17":1,"18":1,"35":1,"54":2}}],["срок",{"2":{"2":3}}],["сроком",{"2":{"2":1}}],["слабая",{"2":{"45":1}}],["слабо",{"2":{"45":1}}],["слишком",{"2":{"11":1}}],["следит",{"2":{"44":1}}],["следить",{"2":{"44":1}}],["следовательно",{"2":{"8":1}}],["следующей",{"2":{"26":1}}],["следующем",{"2":{"18":1}}],["следующее",{"2":{"18":1,"45":1}}],["следующий",{"2":{"18":1}}],["следующими",{"2":{"27":1}}],["следующим",{"2":{"9":1,"16":1}}],["следующих",{"2":{"7":1}}],["следующие",{"2":{"6":1,"10":1,"11":1}}],["следующую",{"2":{"7":1,"53":1}}],["следует",{"2":{"7":1,"25":1,"42":1}}],["служат",{"2":{"44":1}}],["служит",{"2":{"4":1}}],["слушателей",{"2":{"44":1}}],["случай",{"2":{"33":1,"53":1}}],["случаях",{"2":{"19":1,"42":2}}],["случая",{"2":{"8":1}}],["случаев",{"2":{"2":1,"40":1,"41":1,"54":2}}],["случае",{"2":{"2":3,"3":1,"4":1,"7":2,"8":1,"10":1,"11":1,"25":1,"33":1,"34":1,"38":1,"41":2,"42":1,"44":1}}],["слой",{"2":{"52":1}}],["словами",{"2":{"31":1,"42":1,"54":1}}],["слово",{"2":{"8":1,"11":3,"23":1,"25":1,"73":1}}],["сложно",{"2":{"53":1}}],["сложности",{"2":{"6":1,"11":1,"44":2,"75":1}}],["сложность",{"2":{"1":1}}],["сложным",{"2":{"54":1}}],["сложными",{"2":{"44":1}}],["сложный",{"2":{"42":1}}],["сложные",{"2":{"17":1}}],["сложных",{"2":{"6":1,"52":1}}],["сложная",{"2":{"5":1}}],["сломать",{"2":{"2":1}}],["составителя",{"2":{"75":1}}],["состоять",{"2":{"42":1}}],["состояний",{"2":{"25":1}}],["состояния",{"2":{"17":1,"19":1}}],["состоянием",{"2":{"45":1}}],["состояние",{"2":{"15":2,"19":1,"42":2}}],["состоит",{"2":{"6":1,"9":1,"10":1}}],["сопоставимое",{"2":{"43":1}}],["сопутствующей",{"2":{"42":2}}],["сопутствующие",{"2":{"42":1}}],["сопровождения",{"2":{"25":1}}],["сожалению",{"2":{"39":1,"53":1}}],["сотрудничества",{"2":{"29":1}}],["согласны",{"2":{"25":1}}],["соглашений",{"2":{"20":1,"25":1,"26":1}}],["соглашения",{"0":{"20":1},"1":{"21":1,"22":1,"23":1,"24":1,"25":1},"2":{"25":3,"27":1}}],["соглашение",{"2":{"11":1}}],["сочетании",{"2":{"16":1}}],["сокращения",{"0":{"74":1}}],["сокращение",{"0":{"13":1,"18":1},"2":{"18":1}}],["сокращенный",{"2":{"13":1}}],["содержат",{"2":{"52":1}}],["содержать",{"2":{"9":1,"11":1}}],["содержащая",{"2":{"42":1}}],["содержащий",{"2":{"10":1,"11":1}}],["содержание",{"2":{"27":1}}],["содержимым",{"2":{"19":1}}],["содержимое",{"2":{"8":2,"10":1,"54":1}}],["содержит",{"2":{"4":2,"10":1,"11":1,"13":1}}],["собеседованию",{"2":{"53":1}}],["соберет",{"2":{"8":1}}],["собирает",{"2":{"38":1}}],["собираются",{"2":{"19":1}}],["собрать",{"2":{"38":1}}],["собрано",{"2":{"10":1}}],["соблюдали",{"2":{"25":1}}],["событие",{"2":{"18":4}}],["события",{"0":{"24":1},"2":{"11":1}}],["собственные",{"2":{"12":1,"25":1,"29":1}}],["собственный",{"2":{"10":1}}],["собой",{"2":{"6":2,"7":1,"9":1,"10":1,"39":1}}],["социальными",{"2":{"7":1}}],["солидно",{"2":{"40":1}}],["соли",{"2":{"7":1}}],["совпадении",{"2":{"54":1}}],["совпадают",{"2":{"33":1}}],["совсем",{"2":{"44":1,"54":1}}],["советы",{"0":{"41":1},"2":{"45":1,"63":1}}],["советуется",{"2":{"33":1,"41":1}}],["совет",{"2":{"11":1,"15":1,"25":1,"53":1}}],["совершенно",{"2":{"10":1,"19":1}}],["совместно",{"2":{"11":1}}],["совместное",{"2":{"4":1}}],["совместимости",{"2":{"11":1}}],["современный",{"2":{"37":1,"38":1,"53":1}}],["современные",{"0":{"50":1},"2":{"34":1,"38":1}}],["современным",{"2":{"10":1}}],["современном",{"2":{"9":1}}],["современная",{"2":{"6":1}}],["соединения",{"2":{"5":1}}],["соответствующий",{"2":{"41":1}}],["соответствующую",{"2":{"33":1}}],["соответствующее",{"2":{"16":1}}],["соответствует",{"2":{"7":1,"33":1}}],["соответствии",{"2":{"7":1,"53":1}}],["соответственно",{"2":{"4":1,"52":1,"54":1}}],["сообщение",{"2":{"73":1}}],["сообщений",{"2":{"5":2}}],["сообщения",{"2":{"5":1}}],["создать",{"2":{"35":1,"39":1,"42":1,"45":1}}],["создают",{"2":{"16":1}}],["создаст",{"2":{"11":1}}],["создан",{"2":{"75":1}}],["созданы",{"2":{"54":1}}],["созданном",{"2":{"54":1}}],["созданному",{"2":{"11":1}}],["создана",{"2":{"33":1}}],["создание",{"0":{"38":1},"2":{"38":2,"39":1,"54":1}}],["созданию",{"2":{"11":1}}],["создания",{"2":{"7":4,"8":2,"9":2,"11":1,"19":1,"29":1,"43":1,"44":1}}],["создании",{"2":{"4":1,"7":3}}],["создаем",{"2":{"8":1,"18":1}}],["создается",{"2":{"8":1}}],["создает",{"2":{"2":1,"41":1}}],["создавать",{"2":{"6":2,"12":1,"29":1,"52":1}}],["со",{"2":{"4":2,"11":1,"13":1,"22":1,"33":1,"41":1,"42":1,"54":4}}],["сохранил",{"2":{"33":1}}],["сохранить",{"2":{"2":1,"54":1}}],["сохранения",{"2":{"11":1,"19":1}}],["сохранять",{"2":{"3":1}}],["сохраняется",{"2":{"7":1}}],["сохраняет",{"2":{"2":1,"19":1,"33":1,"38":1}}],["стейты",{"2":{"42":1}}],["стейтом",{"2":{"42":5}}],["стейт",{"2":{"42":2,"44":1}}],["стейта",{"2":{"41":1,"42":3}}],["степени",{"2":{"6":1,"11":1}}],["стиля",{"2":{"74":1}}],["стиль",{"2":{"14":1,"15":1,"25":1,"52":1}}],["стилизованной",{"2":{"52":1}}],["стилизацию",{"2":{"44":1,"47":1}}],["стили",{"2":{"10":2,"52":4}}],["стилей",{"2":{"6":1,"10":2}}],["стилем",{"2":{"6":1}}],["сторе",{"2":{"42":1}}],["сторами",{"2":{"42":1}}],["сторы",{"2":{"42":2,"60":1,"62":1}}],["стор",{"2":{"42":4}}],["сторов",{"2":{"42":1}}],["стором",{"2":{"42":1}}],["стороне",{"2":{"54":2}}],["сторонняя",{"2":{"46":1}}],["сторонней",{"2":{"42":1}}],["стороннего",{"2":{"4":1,"54":1}}],["сторонним",{"2":{"4":3}}],["сторонних",{"0":{"47":1},"2":{"4":1,"5":1}}],["сторонний",{"2":{"2":1}}],["стороны",{"2":{"4":1,"7":1}}],["стоит",{"2":{"27":1}}],["столько",{"2":{"16":1}}],["столкнуться",{"2":{"7":1}}],["стратегий",{"2":{"53":1}}],["страшном",{"2":{"41":1}}],["страдает",{"2":{"11":1}}],["странички",{"2":{"54":1}}],["страницу",{"2":{"9":2,"54":3}}],["страниц",{"2":{"6":2,"52":1}}],["странице",{"2":{"4":1,"6":1,"7":1,"8":2,"16":1,"19":2,"35":1,"43":1}}],["страницы",{"2":{"4":2,"8":2,"9":2,"54":4}}],["страница",{"2":{"4":2,"6":1,"9":1,"10":1,"54":1}}],["страницам",{"2":{"4":3}}],["странным",{"2":{"10":1}}],["странно",{"2":{"9":1}}],["структуре",{"2":{"54":1}}],["структурируя",{"2":{"48":1}}],["структура",{"2":{"7":1}}],["структуры",{"2":{"7":1}}],["структурные",{"2":{"6":1}}],["структурой",{"2":{"6":1}}],["строятся",{"2":{"18":1}}],["строительные",{"2":{"9":1}}],["строгость",{"2":{"5":1}}],["строк",{"2":{"46":1,"54":1}}],["строки",{"2":{"8":1,"11":1,"17":1,"38":1}}],["строками",{"2":{"4":1}}],["строка",{"2":{"4":1}}],["строку",{"2":{"2":1,"4":1,"41":1}}],["стало",{"2":{"42":1,"44":1}}],["стала",{"2":{"42":1}}],["стали",{"2":{"6":1,"41":1,"42":1,"52":1}}],["стадии",{"2":{"19":1}}],["старайтесь",{"2":{"49":1,"53":1}}],["стартапе",{"2":{"43":1}}],["стартового",{"2":{"7":1}}],["старой",{"2":{"33":1}}],["старший",{"2":{"2":1}}],["статей",{"2":{"52":1}}],["статистики",{"2":{"38":1}}],["статичный",{"2":{"54":2}}],["статичным",{"2":{"45":1}}],["статичных",{"2":{"34":1}}],["статичной",{"2":{"6":1}}],["стать",{"2":{"53":1}}],["статьи",{"2":{"5":1,"19":1}}],["статья",{"2":{"4":1,"43":1}}],["статье",{"2":{"2":1,"40":1,"41":1,"52":1}}],["становится",{"2":{"11":1,"42":1}}],["становятся",{"2":{"4":1}}],["станут",{"2":{"11":1}}],["станет",{"2":{"8":1}}],["стандартного",{"2":{"40":1}}],["стандартизации",{"2":{"6":1}}],["стандарты",{"0":{"50":1},"2":{"6":1,"7":1,"52":1}}],["стандарте",{"2":{"4":1}}],["стандартами",{"2":{"6":1,"25":1}}],["стандарта",{"2":{"2":1}}],["стандарт",{"2":{"2":1,"4":1}}],["ставить",{"2":{"2":1}}],["спальни",{"2":{"54":1}}],["спать",{"2":{"54":1}}],["справочную",{"2":{"53":1}}],["справочник",{"2":{"53":1}}],["спрятана",{"2":{"1":1}}],["сперва",{"2":{"37":1,"42":1,"53":1,"54":1}}],["спектр",{"2":{"29":1}}],["спецификаций",{"2":{"54":1}}],["спецификации",{"2":{"7":1}}],["специфичное",{"2":{"5":1}}],["специальную",{"2":{"12":1}}],["специальный",{"2":{"19":1}}],["специальные",{"2":{"12":1}}],["специальных",{"2":{"4":1}}],["специального",{"2":{"5":1}}],["специализированным",{"2":{"4":1}}],["списка",{"2":{"19":1}}],["списков",{"2":{"15":1}}],["список",{"2":{"4":2,"11":1,"18":1}}],["способа",{"2":{"54":1}}],["способе",{"2":{"11":1}}],["способом",{"2":{"8":1,"10":1}}],["способ",{"2":{"2":1,"11":3,"33":2,"38":1,"54":1}}],["сайтов",{"2":{"54":1}}],["сайтом",{"2":{"53":1,"74":1}}],["сайты",{"2":{"3":1}}],["сайт",{"2":{"2":1,"31":1,"33":1,"34":4,"45":1,"53":2,"54":2}}],["сайту",{"2":{"2":1,"34":2}}],["сайте",{"2":{"2":1,"3":1,"38":1,"41":1,"42":1,"54":1}}],["сайтами",{"2":{"54":1}}],["сайта",{"2":{"2":4,"33":2,"41":1,"43":1,"44":1,"45":1,"54":3}}],["самая",{"2":{"45":1}}],["самим",{"2":{"54":1}}],["сами",{"2":{"34":1,"38":1,"53":1}}],["самые",{"2":{"38":1,"44":1}}],["самых",{"2":{"29":2}}],["самым",{"2":{"7":1,"10":1,"17":1,"42":1,"54":1}}],["самый",{"2":{"2":1,"33":1,"43":1,"53":1}}],["сам",{"2":{"7":1,"41":1,"42":2,"48":1}}],["самоучитель",{"2":{"53":1}}],["самописный",{"2":{"52":1}}],["самой",{"2":{"43":1,"54":1}}],["самостоятельно",{"2":{"34":2}}],["самостоятельный",{"2":{"3":1}}],["самого",{"2":{"20":1,"33":1}}],["самому",{"2":{"44":1,"52":1}}],["самом",{"2":{"7":1,"25":1,"41":1}}],["самое",{"2":{"2":2,"39":1,"44":1,"47":1}}],["с",{"0":{"0":1},"1":{"1":1},"2":{"1":3,"2":13,"3":10,"4":3,"5":4,"6":4,"7":9,"8":4,"9":3,"10":8,"11":5,"12":1,"15":2,"16":1,"17":1,"18":4,"19":1,"20":1,"22":2,"23":1,"25":1,"26":1,"29":9,"33":4,"34":4,"35":3,"37":1,"38":3,"39":4,"40":1,"41":3,"42":9,"43":4,"44":3,"45":7,"46":1,"47":1,"49":1,"53":10,"54":11,"57":1,"74":3}}]],"serializationVersion":2}';export{e as default}; diff --git a/assets/chunks/@localSearchIndexroot.b272063a.js b/assets/chunks/@localSearchIndexroot.b272063a.js deleted file mode 100644 index 952660b65..000000000 --- a/assets/chunks/@localSearchIndexroot.b272063a.js +++ /dev/null @@ -1 +0,0 @@ -const e='{"documentCount":77,"nextId":77,"documentIds":{"0":"/backend/api.html#абстракция-канала-связи-с-бэкендом","1":"/backend/api.html#api-сервис","2":"/backend/auth.html#аутентификация-и-авторизация","3":"/backend/backend.html#варианты-задеиствовать-свои-бэкенд-для-фронтендера","4":"/backend/cors.html#cors","5":"/backend/protocols.html#протоколы-to-rest-или-не-rest","6":"/book/ru/Chapter 1_ The Vue 3 Framework.html#фреимворк-vue-3","7":"/book/ru/Chapter 1_ The Vue 3 Framework.html#прогрессивныи-фреимворк","8":"/book/ru/Chapter 1_ The Vue 3 Framework.html#использование-vue-в-веб-приложении","9":"/book/ru/Chapter 1_ The Vue 3 Framework.html#путь-сборщика-лучшии-путь","10":"/book/ru/Chapter 1_ The Vue 3 Framework.html#понимание-однофаиловых-компонентов","11":"/book/ru/Chapter 1_ The Vue 3 Framework.html#разные-варианты-options-composition-и-script-setup-api","12":"/book/ru/Chapter 1_ The Vue 3 Framework.html#изучение-встроенных-директив-в-vue-3","13":"/book/ru/Chapter 1_ The Vue 3 Framework.html#v-bind-сокращение","14":"/book/ru/Chapter 1_ The Vue 3 Framework.html#v-show","15":"/book/ru/Chapter 1_ The Vue 3 Framework.html#v-if","16":"/book/ru/Chapter 1_ The Vue 3 Framework.html#v-if-v-else-и-v-else-if","17":"/book/ru/Chapter 1_ The Vue 3 Framework.html#v-for-и-key","18":"/book/ru/Chapter 1_ The Vue 3 Framework.html#v-model","19":"/book/ru/Chapter 1_ The Vue 3 Framework.html#v-on-и-сокращение","20":"/book/ru/Chapter 1_ The Vue 3 Framework.html#встроенные-компоненты","21":"/book/ru/Chapter 1_ The Vue 3 Framework.html#кодовые-соглашения-code-conventions-в-книге","22":"/book/ru/Chapter 1_ The Vue 3 Framework.html#переменные-и-пропсы","23":"/book/ru/Chapter 1_ The Vue 3 Framework.html#константы","24":"/book/ru/Chapter 1_ The Vue 3 Framework.html#имена-классов-и-компонентов","25":"/book/ru/Chapter 1_ The Vue 3 Framework.html#функции-методы-события-и-имена-фаилов","26":"/book/ru/Chapter 1_ The Vue 3 Framework.html#экземпляры","27":"/book/ru/Chapter 1_ The Vue 3 Framework.html#подведение-итогов","28":"/book/ru/Chapter 1_ The Vue 3 Framework.html#вопросы-для-проверки","29":"/book/ru/#о-книге","30":"/book/ru/#vue-js-3-design-patterns-and-best-practices","31":"/book/ru/not-implemented.html#глава-еще-не-переведена","32":"/deployment/ci-cd.html#ci-cd","33":"/deployment/docker.html#docker","34":"/deployment/github-actions.html#github-actions","35":"/deployment/hosting.html#хостинг","36":"/development/assets.html#ресурсы-приложения","37":"/development/assets.html#baseicon","38":"/development/assets.html#icons-js","39":"/development/building.html#создание-и-сборка-приложения","40":"/development/ide.html#настроика-ide","41":"/development/libraries.html#подскажите-удобную-библиотеку","42":"/development/misc.html#полезные-советы","43":"/development/stores.html#state-management-во-vue-3","44":"/development/testing.html#тестирование","45":"/frontend/about-frameworks.html#о-фронтенд-фреимворках","46":"/frontend/architecture.html#архитектура-фронтэнд-приложении","47":"/frontend/architecture.html#избегаите-зависимостеи","48":"/frontend/architecture.html#используите-обертки-над-компонентами-ui-библиотек-и-сторонних-утилит","49":"/frontend/architecture.html#регулярныи-рефакторинг","50":"/frontend/architecture.html#используите-css3","51":"/frontend/architecture.html#используите-современные-стандарты-и-возможности-языков","52":"/frontend/architecture.html#документируите-проект","53":"/frontend/css-ui-libs.html#css-и-ui-библиотеки","54":"/frontend/learning.html#изучение-vue","55":"/frontend/spa-pwa-ssr-ssg.html#spa-pwa-ssg-ssr-и-seo","56":"/misc/CHANGELOG.html#история-изменении","57":"/misc/CHANGELOG.html#v1-3-10-10-2023","58":"/misc/CHANGELOG.html#изменено","59":"/misc/CHANGELOG.html#v1-2-27-09-2023","60":"/misc/CHANGELOG.html#новое","61":"/misc/CHANGELOG.html#изменено-1","62":"/misc/CHANGELOG.html#v1-1-15-09-2023","63":"/misc/CHANGELOG.html#новое-1","64":"/misc/CHANGELOG.html#изменено-2","65":"/misc/CHANGELOG.html#v1-0-11-09-2023","66":"/misc/CHANGELOG.html#новое-2","67":"/misc/cheat-sheets.html#шпаргалки-cheat-sheet","68":"/misc/cheat-sheets.html#vue","69":"/misc/cheat-sheets.html#javascript","70":"/misc/cheat-sheets.html#html","71":"/misc/cheat-sheets.html#css","72":"/misc/cheat-sheets.html#typescript","73":"/misc/cheat-sheets.html#markdown","74":"/misc/contribute.html#внесите-лепту-в-развитие-данного-faq","75":"/misc/glossary.html#глоссарии-и-сокращения","76":"/misc/introduction.html#предисловие"},"fieldIds":{"title":0,"titles":1,"text":2},"fieldLength":{"0":[5,1,1],"1":[2,5,123],"2":[3,1,380],"3":[6,1,258],"4":[1,1,230],"5":[6,1,144],"6":[3,1,278],"7":[2,3,478],"8":[5,3,260],"9":[5,7,231],"10":[3,3,287],"11":[8,3,541],"12":[6,3,48],"13":[5,7,60],"14":[2,7,67],"15":[3,7,1],"16":[4,7,97],"17":[4,7,95],"18":[2,7,92],"19":[5,7,135],"20":[2,3,264],"21":[6,3,46],"22":[3,9,18],"23":[1,9,44],"24":[4,9,17],"25":[6,9,9],"26":[3,9,119],"27":[2,3,49],"28":[3,3,68],"29":[2,1,1],"30":[8,2,168],"31":[4,1,1],"32":[2,1,64],"33":[1,1,1],"34":[2,1,450],"35":[1,1,137],"36":[2,1,203],"37":[1,3,69],"38":[2,3,107],"39":[4,1,219],"40":[2,1,861],"41":[3,1,42],"42":[2,1,262],"43":[5,1,525],"44":[1,1,162],"45":[3,1,414],"46":[3,1,273],"47":[2,4,78],"48":[9,4,41],"49":[2,4,29],"50":[2,4,47],"51":[6,4,18],"52":[2,4,30],"53":[4,1,223],"54":[2,1,431],"55":[6,1,532],"56":[2,1,1],"57":[5,2,1],"58":[1,7,9],"59":[6,2,1],"60":[1,8,6],"61":[1,8,24],"62":[6,2,1],"63":[1,8,3],"64":[1,8,4],"65":[6,2,1],"66":[1,8,3],"67":[4,1,1],"68":[1,4,5],"69":[1,4,4],"70":[1,4,4],"71":[1,4,6],"72":[1,4,8],"73":[1,4,2],"74":[6,1,37],"75":[3,1,66],"76":[1,1,73]},"averageFieldLength":[3.168831168831169,3.5454545454545445,131.012987012987],"storedFields":{"0":{"title":"Абстракция канала связи с бэкендом","titles":[]},"1":{"title":"API сервис","titles":["Абстракция канала связи с бэкендом"]},"2":{"title":"Аутентификация и авторизация","titles":[]},"3":{"title":"Варианты задействовать свой бэкенд для фронтендера","titles":[]},"4":{"title":"CORS","titles":[]},"5":{"title":"Протоколы. To REST или не REST?","titles":[]},"6":{"title":"Фреймворк Vue 3","titles":[]},"7":{"title":"Прогрессивный фреймворк","titles":["Фреймворк Vue 3"]},"8":{"title":"Использование Vue в веб-приложении","titles":["Фреймворк Vue 3"]},"9":{"title":"Путь сборщика, лучший путь...","titles":["Фреймворк Vue 3","Использование Vue в веб-приложении"]},"10":{"title":"Понимание однофайловых компонентов","titles":["Фреймворк Vue 3"]},"11":{"title":"Разные варианты - options, composition, и script setup API","titles":["Фреймворк Vue 3"]},"12":{"title":"Изучение встроенных директив в Vue 3","titles":["Фреймворк Vue 3"]},"13":{"title":"v-bind: (сокращение ":")","titles":["Фреймворк Vue 3","Изучение встроенных директив в Vue 3"]},"14":{"title":"v-show","titles":["Фреймворк Vue 3","Изучение встроенных директив в Vue 3"]},"15":{"title":"v-if.","titles":["Фреймворк Vue 3","Изучение встроенных директив в Vue 3"]},"16":{"title":"v-if, v-else и v-else-if","titles":["Фреймворк Vue 3","Изучение встроенных директив в Vue 3"]},"17":{"title":"v-for и :key","titles":["Фреймворк Vue 3","Изучение встроенных директив в Vue 3"]},"18":{"title":"v-model","titles":["Фреймворк Vue 3","Изучение встроенных директив в Vue 3"]},"19":{"title":"v-on: (и сокращение @)","titles":["Фреймворк Vue 3","Изучение встроенных директив в Vue 3"]},"20":{"title":"Встроенные компоненты","titles":["Фреймворк Vue 3"]},"21":{"title":"Кодовые соглашения (code conventions) в книге","titles":["Фреймворк Vue 3"]},"22":{"title":"Переменные и пропсы","titles":["Фреймворк Vue 3","Кодовые соглашения (code conventions) в книге"]},"23":{"title":"Константы","titles":["Фреймворк Vue 3","Кодовые соглашения (code conventions) в книге"]},"24":{"title":"Имена классов и компонентов","titles":["Фреймворк Vue 3","Кодовые соглашения (code conventions) в книге"]},"25":{"title":"Функции, методы, события и имена файлов","titles":["Фреймворк Vue 3","Кодовые соглашения (code conventions) в книге"]},"26":{"title":""Экземпляры","titles":["Фреймворк Vue 3","Кодовые соглашения (code conventions) в книге"]},"27":{"title":"Подведение итогов","titles":["Фреймворк Vue 3"]},"28":{"title":"Вопросы для проверки","titles":["Фреймворк Vue 3"]},"29":{"title":"О книге","titles":[]},"30":{"title":"Vue.js 3 Design Patterns and Best Practices","titles":["О книге"]},"31":{"title":"Глава еще не переведена","titles":[null]},"32":{"title":"CI/CD","titles":[]},"33":{"title":"Docker","titles":[]},"34":{"title":"Github Actions","titles":[]},"35":{"title":"Хостинг","titles":[]},"36":{"title":"Ресурсы приложения","titles":[]},"37":{"title":"BaseIcon","titles":["Ресурсы приложения",null,null]},"38":{"title":"icons.js","titles":["Ресурсы приложения",null,null]},"39":{"title":"Создание и сборка приложения","titles":[]},"40":{"title":"Настройка IDE","titles":[]},"41":{"title":"Подскажите удобную библиотеку","titles":[]},"42":{"title":"Полезные советы","titles":[]},"43":{"title":"State management во Vue 3","titles":[]},"44":{"title":"Тестирование","titles":[]},"45":{"title":"О фронтенд фреймворках","titles":[]},"46":{"title":"Архитектура фронтэнд приложений","titles":[]},"47":{"title":"Избегайте зависимостей","titles":["Архитектура фронтэнд приложений",null,null,null,null]},"48":{"title":"Используйте обертки над компонентами UI библиотек и сторонних утилит","titles":["Архитектура фронтэнд приложений",null,null,null,null]},"49":{"title":"Регулярный рефакторинг","titles":["Архитектура фронтэнд приложений",null,null,null,null]},"50":{"title":"Используйте CSS3","titles":["Архитектура фронтэнд приложений",null,null,null,null]},"51":{"title":"Используйте современные стандарты и возможности языков","titles":["Архитектура фронтэнд приложений",null,null,null,null]},"52":{"title":"Документируйте проект","titles":["Архитектура фронтэнд приложений",null,null,null,null]},"53":{"title":"CSS и UI библиотеки","titles":[]},"54":{"title":"Изучение Vue","titles":[]},"55":{"title":"SPA, PWA, SSG, SSR и SEO","titles":[]},"56":{"title":"История изменений","titles":[]},"57":{"title":"v1.3 (10-10-2023)","titles":["История изменений"]},"58":{"title":"Изменено","titles":["История изменений","v1.3 (10-10-2023)",null]},"59":{"title":"v1.2 (27-09-2023)","titles":["История изменений"]},"60":{"title":"Новое","titles":["История изменений","v1.2 (27-09-2023)",null]},"61":{"title":"Изменено","titles":["История изменений","v1.2 (27-09-2023)",null]},"62":{"title":"v1.1 (15-09-2023)","titles":["История изменений"]},"63":{"title":"Новое","titles":["История изменений","v1.1 (15-09-2023)"]},"64":{"title":"Изменено","titles":["История изменений","v1.1 (15-09-2023)"]},"65":{"title":"v1.0 (11-09-2023)","titles":["История изменений"]},"66":{"title":"Новое","titles":["История изменений","v1.0 (11-09-2023)"]},"67":{"title":"Шпаргалки (Cheat Sheet)","titles":[]},"68":{"title":"Vue","titles":["Шпаргалки (Cheat Sheet)",null]},"69":{"title":"JavaScript","titles":["Шпаргалки (Cheat Sheet)",null]},"70":{"title":"HTML","titles":["Шпаргалки (Cheat Sheet)",null]},"71":{"title":"CSS","titles":["Шпаргалки (Cheat Sheet)",null]},"72":{"title":"Typescript","titles":["Шпаргалки (Cheat Sheet)",null]},"73":{"title":"Markdown","titles":["Шпаргалки (Cheat Sheet)",null]},"74":{"title":"Внесите лепту в развитие данного FAQ","titles":[]},"75":{"title":"Глоссарий и сокращения","titles":[]},"76":{"title":"Предисловие","titles":[]}},"dirtCount":0,"index":[[">",{"2":{"74":2}}],["qbutton",{"2":{"53":2}}],["questions",{"2":{"76":1}}],["query",{"2":{"51":1}}],["queuebuilder",{"2":{"24":1}}],["quasar",{"2":{"40":4,"41":1}}],["quiet",{"2":{"40":2}}],["quicktime",{"2":{"6":1}}],["quot",{"0":{"13":2,"26":1},"2":{"1":40,"2":2,"3":4,"7":6,"8":22,"9":2,"10":4,"11":32,"13":4,"14":4,"17":8,"18":8,"19":8,"20":28,"28":2,"34":92,"36":28,"37":60,"38":32,"39":48,"40":1298,"42":4,"43":8,"45":4,"46":4,"50":2,"54":3,"55":6}}],["ютюбе",{"2":{"54":1}}],["ютюба",{"2":{"54":1}}],["ю",{"2":{"45":1}}],["юзер",{"2":{"2":1}}],["karma",{"2":{"40":20}}],["keepalive",{"2":{"20":2}}],["keys",{"2":{"43":1}}],["key=",{"2":{"17":2}}],["key",{"0":{"17":1},"2":{"17":1,"20":1,"34":17}}],["^",{"2":{"40":2}}],["^20",{"2":{"39":2}}],["zero",{"2":{"40":2}}],["`~",{"2":{"40":2}}],["`$",{"2":{"37":8}}],["`",{"2":{"34":6,"36":2}}],["|",{"2":{"34":8,"40":2}}],["yarnrc",{"2":{"40":4}}],["yarn",{"2":{"39":1,"40":8}}],["yamllint",{"2":{"40":4}}],["yaml",{"2":{"34":10,"40":14}}],["y",{"2":{"34":2}}],["yourself",{"2":{"40":2}}],["your",{"2":{"34":23,"43":2}}],["🚀",{"2":{"34":2}}],["🛎️",{"2":{"34":2}}],["09",{"0":{"59":1,"62":1,"65":1},"1":{"60":1,"61":1,"63":1,"64":1,"66":1}}],["04",{"2":{"40":2}}],["0",{"0":{"65":1},"1":{"66":1},"2":{"34":10,"55":2}}],["8",{"2":{"30":1,"34":4}}],["6",{"2":{"30":1}}],["$dirs",{"2":{"34":2}}],["$root",{"2":{"34":6}}],["$router",{"2":{"23":1}}],["$backup",{"2":{"34":12}}],["$env",{"2":{"34":2}}],["$project",{"2":{"34":6}}],["$github",{"2":{"34":10}}],["$target",{"2":{"34":16}}],["$store=usestore",{"2":{"23":1}}],["$notifications",{"2":{"23":1}}],["$modals",{"2":{"23":1}}],["$",{"2":{"23":1,"34":30,"36":2,"40":192}}],["50кб",{"2":{"42":1}}],["58",{"2":{"40":2}}],["5",{"2":{"17":3,"30":1,"34":5}}],["цитата",{"2":{"53":1}}],["цикл",{"2":{"17":1}}],["циклу",{"2":{"17":1}}],["цикла",{"2":{"11":1,"17":1}}],["цукерберг",{"2":{"45":1}}],["цепочке",{"2":{"8":1}}],["целесообразно",{"2":{"46":1}}],["целесообразность",{"2":{"44":1}}],["целей",{"2":{"6":1}}],["целом",{"2":{"40":1,"53":1,"54":1,"55":2}}],["целое",{"2":{"9":1}}],["цели",{"2":{"34":1,"43":1}}],["цель",{"2":{"8":1}}],["центр",{"2":{"2":1}}],["70",{"2":{"54":2}}],["7",{"2":{"11":1,"30":1}}],["4",{"2":{"10":2,"17":1,"18":1,"30":1,"38":4,"40":2}}],["401",{"2":{"2":2}}],["+page",{"2":{"40":12}}],["+layout",{"2":{"40":14}}],["+$backups",{"2":{"34":2}}],["+",{"2":{"7":2,"34":2,"38":4}}],["щепоткой",{"2":{"7":1}}],["9",{"2":{"30":1}}],["99",{"2":{"5":1,"43":3}}],["95",{"2":{"2":1,"41":1}}],["шпаргалки",{"0":{"67":1},"1":{"68":1,"69":1,"70":1,"71":1,"72":1,"73":1}}],["штатном",{"2":{"40":1}}],["штука",{"2":{"5":1}}],["шаг",{"2":{"55":1}}],["шагах",{"2":{"30":1}}],["шаблону",{"2":{"43":1}}],["шаблон",{"2":{"11":1,"43":1,"45":2,"46":1,"53":1}}],["шаблоне",{"2":{"11":5,"36":1}}],["шаблонам",{"2":{"55":1}}],["шаблона",{"2":{"11":1}}],["шаблоны",{"2":{"6":1,"20":1}}],["широкий",{"2":{"30":1}}],["шина",{"2":{"5":1}}],["300",{"2":{"40":2}}],["30",{"2":{"40":2}}],["39",{"2":{"20":4,"34":12,"36":4,"40":22}}],["3",{"0":{"6":1,"12":1,"30":1,"43":1,"57":1},"1":{"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":2,"14":2,"15":2,"16":2,"17":2,"18":2,"19":2,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"58":1},"2":{"4":2,"6":3,"7":1,"8":3,"9":3,"10":2,"11":4,"17":1,"19":1,"20":2,"21":1,"27":1,"30":2,"39":2,"40":2,"42":3,"43":9,"45":3,"46":2,"53":1,"54":4,"68":1,"76":1}}],["27",{"0":{"59":1},"1":{"60":1,"61":1}}],["22+",{"2":{"40":1}}],["29",{"2":{"40":2}}],["24",{"2":{"37":4}}],["26",{"2":{"36":2}}],["2022",{"2":{"76":1}}],["2023",{"0":{"57":1,"59":1,"62":1,"65":1},"1":{"58":1,"60":1,"61":1,"63":1,"64":1,"66":1},"2":{"40":2,"54":1,"76":1}}],["2016",{"2":{"54":1}}],["20~30",{"2":{"39":1}}],["200",{"2":{"35":1,"40":2,"55":1}}],["20",{"2":{"34":2,"43":1,"54":1}}],["2",{"0":{"59":1},"1":{"60":1,"61":1},"2":{"4":2,"5":1,"6":1,"11":4,"17":1,"30":1,"40":6,"42":7,"43":2,"45":1,"53":1,"54":3,"55":1,"71":2}}],["way",{"2":{"74":1}}],["watch",{"2":{"45":1}}],["watchman",{"2":{"40":4}}],["windi",{"2":{"40":20}}],["window",{"2":{"34":2,"40":8}}],["width",{"2":{"37":14}}],["wide",{"2":{"6":1}}],["with",{"2":{"34":16,"38":2,"40":2}}],["words",{"2":{"43":1}}],["wordseparators",{"2":{"40":2}}],["workbox",{"2":{"55":2}}],["workbench",{"2":{"40":22}}],["worker",{"2":{"55":3,"75":1}}],["workers",{"2":{"30":1}}],["workspace",{"2":{"40":6}}],["workingissueformatscm",{"2":{"40":2}}],["work",{"2":{"34":2,"40":4}}],["workflow",{"2":{"34":3}}],["workflows",{"2":{"34":5}}],["world",{"2":{"6":1,"8":2,"10":2,"11":7}}],["write",{"2":{"10":2,"34":2,"43":1}}],["we",{"2":{"10":2}}],["webdriverio",{"2":{"44":1}}],["webpack",{"2":{"39":4,"40":26}}],["webp",{"2":{"38":1}}],["webstorm",{"2":{"40":2}}],["website",{"2":{"34":2,"35":5}}],["websocket",{"2":{"5":1}}],["websockets",{"2":{"1":1,"5":3,"54":1}}],["web",{"2":{"6":1,"30":1,"55":4}}],["www",{"2":{"4":1,"30":1,"34":12}}],["huskyrc",{"2":{"40":4}}],["hxx",{"2":{"40":6}}],["hpp",{"2":{"40":6}}],["histoire",{"2":{"40":20}}],["history",{"2":{"40":10}}],["highlightmodifiedtabs",{"2":{"40":2}}],["hmr",{"2":{"39":1}}],["h",{"2":{"34":2,"40":8}}],["holding",{"2":{"43":2}}],["houdini",{"2":{"40":2}}],["hover",{"2":{"40":2}}],["hooks",{"2":{"11":1,"40":8}}],["hosts",{"2":{"43":1}}],["host",{"2":{"4":2,"34":14}}],["h1",{"2":{"10":6}}],["heidisql",{"2":{"40":1}}],["height",{"2":{"37":14}}],["heex",{"2":{"40":2}}],["hexcolorlength",{"2":{"40":2}}],["helps",{"2":{"38":2}}],["hello=",{"2":{"11":1}}],["hello",{"2":{"8":2,"10":2,"11":19}}],["heroku",{"2":{"35":1}}],["here",{"2":{"10":2}}],["header",{"2":{"51":1}}],["headless",{"2":{"44":1,"53":1}}],["head",{"2":{"8":5}}],["htmlnanorc",{"2":{"40":40}}],["html=",{"2":{"37":2}}],["html5",{"2":{"6":1,"51":1,"70":1}}],["html",{"0":{"70":1},"2":{"4":1,"6":5,"7":2,"8":7,"9":2,"10":7,"11":1,"12":2,"13":4,"18":2,"19":4,"20":4,"34":2,"35":1,"36":2,"40":11,"45":3,"54":1,"55":10}}],["https",{"2":{"4":10,"8":2,"19":1,"20":2,"35":1,"40":4,"55":1}}],["httponly",{"2":{"2":3}}],["http",{"2":{"1":21,"3":1,"4":4,"36":1}}],["12",{"2":{"54":1}}],["15",{"0":{"62":1},"1":{"63":1,"64":1},"2":{"47":1}}],["16гб",{"2":{"40":1}}],["11",{"0":{"65":1},"1":{"66":1},"2":{"30":1}}],["1000",{"2":{"43":1}}],["100",{"2":{"37":4,"55":1}}],["10",{"0":{"57":2},"1":{"58":2},"2":{"30":1,"40":2,"53":1,"54":2}}],["1",{"0":{"62":1},"1":{"63":1,"64":1},"2":{"4":11,"5":1,"9":2,"17":1,"30":1,"38":4,"39":2,"42":4,"43":1,"55":1}}],["хранятся",{"2":{"54":1}}],["хранит",{"2":{"42":1}}],["хранить",{"2":{"2":1,"34":1,"43":1}}],["хедером",{"2":{"46":1}}],["хватает",{"2":{"41":1}}],["хэш",{"2":{"36":1}}],["хочу",{"2":{"46":2,"54":1}}],["хочет",{"2":{"3":2}}],["хотя",{"2":{"54":1}}],["хоть",{"2":{"45":2}}],["хотите",{"2":{"7":1,"10":2,"42":1}}],["хостите",{"2":{"35":1}}],["хостинг",{"0":{"35":1},"2":{"35":1}}],["хост",{"2":{"34":2}}],["хостеры",{"2":{"35":1}}],["хосте",{"2":{"34":1}}],["хорош",{"2":{"47":1}}],["хорошее",{"2":{"30":1}}],["хорошей",{"2":{"21":1}}],["хорошие",{"2":{"45":1,"53":2}}],["хороших",{"2":{"30":1}}],["хороший",{"2":{"7":1,"40":1}}],["хорошая",{"2":{"10":1,"44":1,"46":2}}],["хорошо",{"2":{"6":1,"11":1,"40":1,"53":1}}],["я",{"2":{"8":1,"11":2,"20":1,"30":1,"46":2,"54":2}}],["языков",{"0":{"51":1},"2":{"7":1,"42":1,"46":1}}],["язык",{"2":{"5":1,"6":2,"26":1,"43":1,"54":1}}],["языках",{"2":{"45":1,"46":1}}],["языками",{"2":{"10":1}}],["языка",{"2":{"4":1,"42":1,"54":1}}],["языке",{"2":{"3":2,"11":1,"54":1}}],["явно",{"2":{"11":1,"20":1}}],["явном",{"2":{"10":1}}],["явным",{"2":{"1":1}}],["является",{"2":{"3":1,"7":1,"8":1,"10":3,"11":4,"13":1,"28":1,"43":1,"45":2,"46":1,"55":1}}],["являются",{"2":{"3":1,"21":1,"26":1,"42":1}}],["like",{"2":{"43":2}}],["license",{"2":{"40":2}}],["lighthouserc",{"2":{"40":40}}],["linux",{"2":{"40":1}}],["lintstagedrc",{"2":{"40":4}}],["lint",{"2":{"40":8}}],["line",{"2":{"40":2}}],["linenumbers",{"2":{"40":2}}],["limit",{"2":{"40":6}}],["lib",{"2":{"40":2}}],["list",{"2":{"39":2,"40":2}}],["life",{"2":{"11":1}}],["learn",{"2":{"54":1}}],["lerna",{"2":{"40":4}}],["leex",{"2":{"40":2}}],["less",{"2":{"40":2}}],["length",{"2":{"38":4}}],["let",{"2":{"38":2}}],["layouts",{"2":{"46":1}}],["last",{"2":{"40":2}}],["lastindexof",{"2":{"38":4}}],["latexmk",{"2":{"40":2}}],["latest",{"2":{"34":4}}],["language",{"2":{"23":1,"40":2}}],["lang=",{"2":{"10":1,"37":2}}],["lamda",{"2":{"3":1}}],["lambda",{"2":{"3":1}}],["lt",{"2":{"8":24,"10":16,"11":16,"13":2,"14":4,"17":4,"18":2,"19":8,"20":16,"36":8,"37":16,"40":3,"53":8}}],["lot",{"2":{"40":2}}],["lof",{"2":{"40":2}}],["lock",{"2":{"40":26}}],["location",{"2":{"34":2}}],["localstoragename",{"2":{"34":6}}],["localstorage",{"2":{"2":1,"34":5}}],["loadicons",{"2":{"38":4}}],["loading",{"2":{"1":4,"14":4}}],["logic",{"2":{"43":2}}],["login",{"2":{"43":1}}],["logs",{"2":{"34":2,"40":2}}],["log",{"2":{"34":2,"40":2}}],["logout",{"2":{"1":2,"43":1}}],["certification",{"2":{"54":1}}],["certbot",{"2":{"35":1}}],["czrc",{"2":{"40":4}}],["cz",{"2":{"40":4}}],["cypress",{"2":{"40":20,"44":1}}],["cycle",{"2":{"11":1}}],["cmakepresets",{"2":{"40":2}}],["cmake",{"2":{"40":6}}],["cmakelists",{"2":{"40":2}}],["cxx",{"2":{"40":2}}],["cjs",{"2":{"40":8}}],["cc",{"2":{"40":2}}],["csproj",{"2":{"40":2}}],["cspell",{"2":{"40":4}}],["cshtml",{"2":{"40":4}}],["cs",{"2":{"40":24}}],["css3",{"0":{"50":1},"2":{"50":1,"51":1,"53":1}}],["cssnano",{"2":{"40":20}}],["cssnanorc",{"2":{"40":20}}],["css",{"0":{"53":1,"71":1},"2":{"6":4,"8":1,"9":1,"10":4,"14":1,"20":1,"35":1,"40":10,"41":1,"45":1,"50":1,"53":9,"54":1,"55":1}}],["custom",{"2":{"40":4}}],["cursorstyle",{"2":{"40":2}}],["cursorsmoothcaretanimation",{"2":{"40":2}}],["cursorblinking",{"2":{"40":2}}],["currentcolor",{"2":{"37":4}}],["ctrlcmd",{"2":{"40":2}}],["cpp",{"2":{"40":2}}],["cp",{"2":{"34":2}}],["cheat",{"0":{"67":1},"1":{"68":1,"69":1,"70":1,"71":1,"72":1,"73":1},"2":{"68":1,"69":1,"70":1,"71":4}}],["check",{"2":{"40":2}}],["checkout",{"2":{"34":7}}],["chrome",{"2":{"55":1}}],["changelog",{"2":{"40":2}}],["chgrp",{"2":{"34":4}}],["choice",{"2":{"34":2}}],["cd",{"0":{"32":1},"2":{"32":5,"34":7,"44":1,"54":1,"61":1}}],["cdn",{"2":{"8":1}}],["citation",{"2":{"40":2}}],["circleci",{"2":{"40":4}}],["ci",{"0":{"32":1},"2":{"32":5,"34":1,"44":1,"54":1,"61":1}}],["c",{"2":{"7":3,"11":1,"40":2}}],["can",{"2":{"43":1}}],["cache",{"2":{"40":2}}],["cargo",{"2":{"40":4}}],["capture",{"2":{"40":190}}],["camelcase",{"2":{"25":1}}],["case",{"2":{"23":1,"52":1}}],["ca",{"2":{"7":1}}],["clangd",{"2":{"40":2}}],["clang",{"2":{"40":4}}],["classes",{"2":{"72":1}}],["classpath",{"2":{"40":2}}],["class",{"2":{"40":2}}],["class=",{"2":{"37":2}}],["closeonfiledelete",{"2":{"40":2}}],["cloud",{"2":{"3":2,"54":1}}],["clean",{"2":{"34":2}}],["clippy",{"2":{"40":4}}],["clipboard",{"2":{"40":8}}],["cli",{"2":{"39":1,"40":4}}],["click=",{"2":{"19":4,"20":2}}],["click",{"2":{"19":2}}],["client",{"2":{"4":11}}],["crowdin",{"2":{"40":4}}],["cross",{"2":{"4":1,"40":2}}],["credits",{"2":{"40":2}}],["credo",{"2":{"40":2}}],["create",{"2":{"39":2,"74":1}}],["createapp",{"2":{"8":6}}],["crud",{"2":{"3":1}}],["copying",{"2":{"40":2}}],["count`",{"2":{"34":2}}],["count=5",{"2":{"34":2}}],["count",{"2":{"22":1}}],["codesandbox",{"2":{"40":1}}],["codeowners",{"2":{"40":2}}],["codecov",{"2":{"40":20}}],["codelens",{"2":{"40":8}}],["codeaction",{"2":{"40":2}}],["codeactions",{"2":{"40":2}}],["codeactionsonsave",{"2":{"40":4}}],["codeium",{"2":{"40":1}}],["code",{"0":{"21":1},"1":{"22":1,"23":1,"24":1,"25":1,"26":1},"2":{"11":1,"23":1,"40":11,"45":1}}],["colortheme",{"2":{"40":2}}],["color",{"2":{"10":2,"37":6}}],["cors",{"0":{"4":1},"2":{"4":10,"58":1}}],["commands",{"2":{"40":2}}],["commitlint",{"2":{"40":8}}],["commit",{"2":{"32":1}}],["compile",{"2":{"40":2}}],["compileroptions",{"2":{"39":2}}],["completion",{"2":{"40":2}}],["compare",{"2":{"40":12}}],["computed",{"2":{"11":1,"37":6}}],["component",{"2":{"20":5,"40":14,"43":3}}],["components",{"2":{"11":1,"20":1,"39":2,"40":2,"46":1}}],["composable",{"2":{"43":9,"45":2}}],["composables",{"2":{"1":2,"11":1,"43":1,"46":1}}],["compose",{"2":{"40":2}}],["composer",{"2":{"40":4}}],["composition",{"0":{"11":1},"2":{"11":10,"42":3,"54":1,"61":1}}],["comaccess",{"2":{"4":2}}],["comget",{"2":{"4":1}}],["com",{"2":{"3":1,"4":12,"8":2,"30":1,"34":17,"35":5,"40":4}}],["connection",{"2":{"40":1}}],["conduct",{"2":{"40":2}}],["conf",{"2":{"40":2}}],["confirmsync",{"2":{"40":2}}],["confirmdraganddrop",{"2":{"40":2}}],["confirmdelete",{"2":{"40":2}}],["configs",{"2":{"40":2}}],["config",{"2":{"39":3,"40":449}}],["console",{"2":{"34":2}}],["constant",{"2":{"11":2}}],["const",{"2":{"1":6,"8":2,"11":4,"20":2,"23":1,"26":1,"34":1,"37":6,"38":11,"42":3,"43":2}}],["container",{"2":{"51":1}}],["contributors",{"2":{"40":2}}],["contributing",{"2":{"40":2}}],["controller",{"2":{"40":2,"43":3,"45":2}}],["control",{"2":{"2":1,"4":7,"72":1}}],["contentlayer",{"2":{"40":20}}],["contents",{"2":{"34":2}}],["continuous",{"2":{"32":2}}],["conventions",{"0":{"21":1},"1":{"22":1,"23":1,"24":1,"25":1,"26":1}}],["convention",{"2":{"11":1}}],["cookie",{"2":{"2":3}}],["mjs",{"2":{"40":8}}],["multicursormodifier",{"2":{"40":2}}],["m",{"2":{"34":4}}],["mdsvex",{"2":{"40":2}}],["md",{"2":{"34":2,"40":6}}],["mkdir",{"2":{"34":4}}],["mvp",{"2":{"44":1}}],["mvc",{"2":{"43":1,"45":1}}],["mv",{"2":{"34":2}}],["moment",{"2":{"41":1}}],["mocha",{"2":{"40":20}}],["monospace",{"2":{"40":2}}],["mono",{"2":{"40":2}}],["mod",{"2":{"40":2}}],["module",{"2":{"40":2}}],["modules",{"2":{"38":12,"39":1,"40":4}}],["mode",{"2":{"40":2}}],["modern",{"2":{"40":2}}],["model=",{"2":{"18":2}}],["model",{"0":{"18":1},"2":{"14":1,"26":1,"43":1,"45":1}}],["mount",{"2":{"8":4}}],["mysql",{"2":{"40":1,"54":1}}],["my",{"2":{"13":4}}],["mymethod",{"2":{"11":1}}],["management",{"0":{"43":1},"2":{"43":2}}],["manually",{"2":{"40":2}}],["mailmap",{"2":{"40":2}}],["maintainers",{"2":{"40":2}}],["main",{"2":{"9":1,"34":9}}],["markdownlint",{"2":{"40":4}}],["markdown",{"0":{"73":1},"2":{"40":2,"73":1}}],["macos",{"2":{"40":2}}],["macromedia",{"2":{"6":1}}],["map",{"2":{"38":4,"40":14}}],["mastery",{"2":{"54":1}}],["master",{"2":{"34":5,"40":2}}],["menus",{"2":{"40":2}}],["methods",{"2":{"11":1}}],["metadata",{"2":{"40":2}}],["meta",{"2":{"1":2,"37":1,"38":4}}],["message",{"2":{"8":6}}],["mix",{"2":{"40":6}}],["might",{"2":{"40":2}}],["minheight",{"2":{"37":2}}],["minwidth",{"2":{"37":2}}],["mitt",{"2":{"5":1}}],["microsoft",{"2":{"3":1,"35":1,"40":1}}],["зерна",{"2":{"54":1}}],["зря",{"2":{"53":1}}],["зрения",{"2":{"30":1,"43":3,"75":1}}],["змеином",{"2":{"23":1}}],["звучит",{"2":{"9":1}}],["зона",{"2":{"7":1}}],["здесь",{"2":{"5":1,"6":1,"9":1,"10":2,"11":2,"19":1,"20":2,"43":1}}],["знаний",{"2":{"54":1}}],["знанию",{"2":{"54":1}}],["знания",{"2":{"6":1,"54":2}}],["знал",{"2":{"54":1}}],["знающих",{"2":{"54":1}}],["знают",{"2":{"53":1}}],["знатоков",{"2":{"40":1}}],["знать",{"2":{"7":1,"9":1,"11":1,"39":1,"54":2}}],["знаем",{"2":{"11":1}}],["знает",{"2":{"9":1,"11":2}}],["знаете",{"2":{"3":1}}],["знака",{"2":{"23":1}}],["знаком",{"2":{"22":1}}],["знакомым",{"2":{"10":1}}],["знак",{"2":{"8":1}}],["значению",{"2":{"11":2}}],["значений",{"2":{"11":1}}],["значением",{"2":{"13":1,"45":1}}],["значение",{"2":{"7":4,"8":1,"11":7,"13":2,"14":2,"17":1,"18":2,"20":1,"34":1}}],["значения",{"2":{"7":1,"8":1,"11":1,"13":1,"16":1,"18":1,"20":1,"23":1,"45":1}}],["значении",{"2":{"3":1}}],["значительный",{"2":{"7":1,"55":1}}],["значительные",{"2":{"6":1}}],["значительную",{"2":{"7":1}}],["значительное",{"2":{"42":1}}],["значительно",{"2":{"7":1,"8":1,"40":1,"46":1,"53":1,"55":1}}],["значительной",{"2":{"6":1}}],["зазываниях",{"2":{"47":1}}],["затрагиваемым",{"2":{"76":1}}],["затратами",{"2":{"46":1}}],["затем",{"2":{"2":1,"3":1,"9":2,"38":1,"55":3}}],["зажимает",{"2":{"45":1}}],["зависящие",{"2":{"45":1}}],["зависимое",{"2":{"7":1}}],["зависимость",{"2":{"43":1,"47":1,"53":2}}],["зависимостей",{"0":{"47":1},"2":{"7":1,"23":1,"42":1,"45":2}}],["зависимости",{"2":{"2":1,"7":2,"10":1,"11":1,"16":1,"36":1,"55":1}}],["зависит",{"2":{"4":1,"7":1,"8":1}}],["занять",{"2":{"44":1}}],["занимающие",{"2":{"42":1}}],["занимаются",{"2":{"44":1}}],["занимают",{"2":{"39":1}}],["занимает",{"2":{"6":1}}],["зачастую",{"2":{"44":1}}],["зачем",{"2":{"43":1}}],["забыл",{"2":{"50":1}}],["забыть",{"2":{"42":1}}],["заботу",{"2":{"45":1}}],["заботитесь",{"2":{"38":1}}],["загуглите",{"2":{"47":1}}],["заглянуть",{"2":{"40":1}}],["заглавными",{"2":{"23":1,"26":1}}],["загромождает",{"2":{"11":1}}],["загружаясь",{"2":{"36":1}}],["загружать",{"2":{"9":1,"20":1}}],["загрузке",{"2":{"34":1,"40":1,"55":1}}],["загрузки",{"2":{"34":2,"36":1,"42":1}}],["загрузка",{"2":{"34":1}}],["загрузит",{"2":{"9":2}}],["заголовков",{"2":{"4":1}}],["захостите",{"2":{"54":1}}],["захостить",{"2":{"3":1,"35":1}}],["захотеть",{"2":{"7":1}}],["закэшировать",{"2":{"55":1}}],["заказчик",{"2":{"46":1,"50":1}}],["заканчивая",{"2":{"10":1,"30":1}}],["закрытый",{"2":{"34":1}}],["закрепить",{"2":{"28":1}}],["заключенного",{"2":{"9":1}}],["заключается",{"2":{"7":4,"11":1,"20":1}}],["законченный",{"2":{"54":1}}],["закон",{"2":{"7":1}}],["заранее",{"2":{"55":1}}],["зарегистрируйте",{"2":{"54":1}}],["зарегистрироваться",{"2":{"54":1}}],["зарезервированное",{"2":{"11":1}}],["зарекомендовавшие",{"2":{"6":1}}],["зародились",{"2":{"6":1}}],["защиты",{"2":{"4":1,"30":1}}],["задаваемые",{"2":{"76":1}}],["задачей",{"2":{"45":1}}],["задача",{"2":{"40":1}}],["задает",{"2":{"42":1}}],["заданном",{"2":{"9":1}}],["заданному",{"2":{"3":1}}],["задать",{"2":{"2":1,"45":2}}],["задействовать",{"0":{"3":1},"2":{"55":1}}],["за",{"2":{"2":1,"5":1,"6":1,"7":1,"11":1,"16":1,"20":3,"26":1,"30":2,"40":1,"42":2,"43":4,"45":6,"54":1}}],["заставлять",{"2":{"2":1}}],["заметки",{"2":{"55":1}}],["заметить",{"2":{"11":1}}],["замечательным",{"2":{"8":1}}],["замена",{"2":{"42":1}}],["замены",{"2":{"42":1}}],["замену",{"2":{"42":2,"45":1,"48":1}}],["заменяются",{"2":{"22":1}}],["заменится",{"2":{"20":1}}],["замените",{"2":{"19":1}}],["заменить",{"2":{"1":1,"46":1,"53":2}}],["заменено",{"2":{"8":1}}],["заморачиваться",{"2":{"3":1}}],["заморочки",{"2":{"2":1}}],["заполнено",{"2":{"43":1}}],["запомните",{"2":{"10":1}}],["запущен",{"2":{"44":1}}],["запутывающее",{"2":{"43":1}}],["запуск",{"2":{"66":1}}],["запуске",{"2":{"55":2}}],["запускалось",{"2":{"55":1}}],["запускаются",{"2":{"11":1,"40":1}}],["запускается",{"2":{"39":1}}],["запускает",{"2":{"9":1}}],["запустим",{"2":{"9":1}}],["запустить",{"2":{"3":2,"40":1}}],["запасного",{"2":{"20":1}}],["записываются",{"2":{"24":1}}],["записанный",{"2":{"2":1}}],["записи",{"2":{"2":1,"11":1}}],["запрошен",{"2":{"4":1}}],["запросом",{"2":{"55":1}}],["запросов",{"2":{"1":1,"4":1,"5":2}}],["запросы",{"2":{"5":1,"40":1,"55":2}}],["запрос",{"2":{"4":3}}],["запросе",{"2":{"2":2}}],["запросам",{"2":{"4":1}}],["запроса",{"2":{"1":1,"4":4,"55":1}}],["запрашивает",{"2":{"4":1}}],["запрашиваемого",{"2":{"4":1}}],["запрашиваемому",{"2":{"2":1}}],["запрашивать",{"2":{"3":1}}],["запрашивающий",{"2":{"2":1}}],["запрещены",{"2":{"2":1}}],["залогинился",{"2":{"2":1,"43":1}}],["nls",{"2":{"40":4}}],["nx",{"2":{"40":4}}],["nvmrc",{"2":{"40":4}}],["nix",{"2":{"40":6}}],["nativetabs",{"2":{"40":2}}],["named",{"2":{"38":2}}],["name=",{"2":{"36":2}}],["name",{"2":{"11":3,"18":3,"34":24,"36":4,"37":8,"38":16}}],["null",{"2":{"40":2}}],["nuxt",{"2":{"7":1,"40":4}}],["npx",{"2":{"39":4}}],["npm",{"2":{"39":1,"40":8,"42":1,"47":1}}],["n",{"2":{"34":2,"40":2}}],["nest",{"2":{"40":4}}],["nesting",{"2":{"40":4}}],["next",{"2":{"40":4}}],["never",{"2":{"40":2}}],["netlify",{"2":{"35":1,"40":4}}],["network",{"2":{"3":1}}],["newitem",{"2":{"45":6}}],["new",{"2":{"34":4,"38":4}}],["nginx",{"2":{"3":1,"35":1}}],["nodе",{"2":{"40":1}}],["nodemon",{"2":{"40":8}}],["node",{"2":{"3":2,"34":4,"39":5,"40":11,"54":1,"55":1}}],["not",{"2":{"40":2,"42":2}}],["notificationinterceptor",{"2":{"1":4}}],["nosql",{"2":{"3":1,"43":1}}],["bit",{"2":{"43":1}}],["bind",{"0":{"13":1},"2":{"13":1}}],["bzl",{"2":{"40":2}}],["bbl",{"2":{"40":2}}],["blg",{"2":{"40":2}}],["bloc",{"2":{"40":2}}],["blame",{"2":{"40":6}}],["bound",{"2":{"43":2}}],["boundary",{"2":{"40":2}}],["bower",{"2":{"40":6}}],["body",{"2":{"8":6}}],["be",{"2":{"34":4,"40":2}}],["best",{"0":{"30":1},"2":{"54":1}}],["by",{"2":{"34":2}}],["bracketpairs",{"2":{"40":2}}],["branch",{"2":{"34":2}}],["branches",{"2":{"34":4}}],["browserslist",{"2":{"40":4}}],["browser",{"2":{"2":1,"40":2}}],["builddata",{"2":{"34":8}}],["build",{"2":{"34":19,"39":2,"40":8}}],["built",{"2":{"19":1,"20":2}}],["button",{"2":{"19":8,"20":4,"53":1}}],["bundleconfig",{"2":{"40":4}}],["bundle",{"2":{"9":1,"39":6}}],["bundler",{"2":{"9":1}}],["business",{"2":{"43":2}}],["bus",{"2":{"5":1}}],["b",{"2":{"7":4,"42":4}}],["babel",{"2":{"40":20}}],["babelrc",{"2":{"40":20}}],["bazelproject",{"2":{"40":2}}],["bazelignore",{"2":{"40":2}}],["bazelrc",{"2":{"40":2}}],["bazel",{"2":{"40":6}}],["baseinput",{"2":{"48":1}}],["baseicon",{"0":{"37":1},"2":{"36":3,"39":4}}],["basebutton",{"2":{"46":1,"48":1,"53":3}}],["base",{"2":{"37":2}}],["base64",{"2":{"36":1}}],["based",{"2":{"2":3}}],["banner",{"2":{"36":1}}],["backers",{"2":{"40":2}}],["backend",{"2":{"3":1}}],["backups",{"2":{"34":2}}],["backup",{"2":{"34":15}}],["baas",{"2":{"3":5}}],["эстетики",{"2":{"75":1}}],["эволюция",{"2":{"53":1}}],["эван",{"2":{"45":1}}],["эффективно",{"2":{"46":1}}],["эффективности",{"2":{"42":1}}],["эффективного",{"2":{"17":1}}],["эффективней",{"2":{"42":1,"45":2,"55":1}}],["экран",{"2":{"55":1}}],["экране",{"2":{"20":1}}],["экосистеме",{"2":{"40":1}}],["экономичным",{"2":{"3":1}}],["экспериментировал",{"2":{"45":1}}],["экспериментальной",{"2":{"20":1}}],["экспорт",{"2":{"11":1}}],["экспортируете",{"2":{"43":1}}],["экспортирует",{"2":{"10":1}}],["эквивалентна",{"2":{"14":1}}],["экземпляров",{"2":{"43":1}}],["экземпляры",{"0":{"26":1},"2":{"20":1,"26":1}}],["экземпляру",{"2":{"11":1}}],["экземпляр",{"2":{"8":1}}],["элементом",{"2":{"18":1}}],["элементов",{"2":{"2":1,"6":1,"16":2,"17":2,"20":5,"42":4,"44":1}}],["элементу",{"2":{"18":1}}],["элементарное",{"2":{"54":1}}],["элементарно",{"2":{"36":1}}],["элементами",{"2":{"16":1,"19":1}}],["элемента",{"2":{"10":1,"12":2,"17":2,"45":1,"55":1}}],["элемент",{"2":{"8":4,"14":2,"16":4,"20":1,"75":1}}],["элементы",{"2":{"6":1,"10":1,"20":1,"32":1,"45":1,"51":1,"55":1}}],["эти",{"2":{"9":2,"10":1,"11":2,"16":1,"17":1,"26":1,"27":1,"28":1,"43":2}}],["этим",{"2":{"7":1,"10":1}}],["этих",{"2":{"4":1,"6":1,"7":4,"18":1,"44":1,"54":1,"55":1}}],["этапе",{"2":{"46":1}}],["эта",{"2":{"7":1,"11":1,"14":1,"18":1,"19":1,"40":1}}],["эту",{"2":{"5":1,"11":1,"36":1,"44":1,"54":1}}],["этого",{"2":{"9":1,"10":3,"11":1,"12":1,"16":1,"35":1,"39":1,"42":1,"43":1,"45":1,"46":1,"54":2,"55":2}}],["этому",{"2":{"54":1}}],["этом",{"2":{"7":2,"8":2,"9":1,"11":2,"18":1,"20":1,"35":1,"36":1,"39":1,"43":2,"44":2,"45":3,"54":1}}],["этой",{"2":{"2":1,"6":4,"7":1,"11":3,"19":2,"20":1,"21":2,"27":1,"28":1,"30":2,"34":1,"41":1,"42":1,"43":1,"53":1}}],["этот",{"2":{"2":1,"7":2,"8":2,"9":1,"11":3,"14":1,"34":1,"40":1,"46":2,"54":2}}],["это",{"2":{"2":3,"3":3,"4":3,"6":1,"7":9,"8":4,"9":1,"10":7,"11":16,"16":1,"17":1,"18":1,"19":1,"20":4,"26":2,"32":1,"35":1,"36":2,"39":1,"43":8,"44":1,"45":10,"46":6,"47":2,"48":1,"49":1,"50":1,"52":1,"53":1,"54":4,"55":4}}],["эндпойнту",{"2":{"3":2}}],["эндпойнтам",{"2":{"3":1}}],["эндпойнтов",{"2":{"3":1}}],["other",{"2":{"43":1}}],["ok",{"2":{"42":4}}],["observer",{"2":{"42":1}}],["object",{"2":{"14":1,"38":2}}],["overrides",{"2":{"40":2}}],["openclose",{"2":{"40":2}}],["option",{"2":{"23":1}}],["options",{"0":{"11":1},"2":{"11":6,"34":2,"40":2,"42":1}}],["out",{"2":{"40":4}}],["output",{"2":{"40":2}}],["our",{"2":{"10":2}}],["off",{"2":{"40":2,"43":1}}],["of",{"2":{"36":2,"40":2,"55":1}}],["oreilly",{"2":{"54":1}}],["organizeimports",{"2":{"40":2}}],["org",{"2":{"19":1,"20":2}}],["origin",{"2":{"4":11}}],["oracle",{"2":{"3":1,"35":1}}],["one",{"2":{"55":1}}],["ontaskerrors",{"2":{"40":2}}],["onlyenabledextensions",{"2":{"40":2}}],["only",{"2":{"40":4}}],["on",{"0":{"19":1},"2":{"2":1,"19":3,"34":10,"40":4}}],["oauth",{"2":{"2":2}}],["dx",{"2":{"53":1,"75":1}}],["dropdown",{"2":{"53":1}}],["drive",{"2":{"2":3}}],["dprint",{"2":{"40":8}}],["dlint",{"2":{"40":8}}],["day",{"2":{"41":2}}],["dangerfile",{"2":{"40":4}}],["dart",{"2":{"40":12}}],["dark",{"2":{"40":2}}],["date=`date",{"2":{"34":2}}],["date",{"2":{"34":14,"40":2}}],["datanpx",{"2":{"39":1}}],["data",{"2":{"8":3,"11":7,"34":4,"39":1}}],["dynamic",{"2":{"36":2}}],["dt",{"2":{"34":2}}],["d",{"2":{"34":2,"40":32}}],["docs",{"2":{"34":2,"35":1}}],["dockerignore",{"2":{"40":2}}],["dockerfile",{"2":{"40":4}}],["docker",{"0":{"33":1},"2":{"40":3}}],["document",{"2":{"14":1,"54":1}}],["dosubscribe",{"2":{"25":1}}],["dom",{"2":{"14":1,"16":2,"18":1}}],["dialyzer",{"2":{"40":2}}],["dialogstyle",{"2":{"40":2}}],["diffeditor",{"2":{"40":2}}],["diffdecorationsgutterwidth",{"2":{"40":2}}],["dirname",{"2":{"39":2}}],["dirs",{"2":{"34":2}}],["dir=`echo",{"2":{"34":4}}],["dir=your",{"2":{"34":2}}],["dir=dev",{"2":{"34":2}}],["dir=",{"2":{"34":4}}],["dir",{"2":{"34":48}}],["directives",{"2":{"19":1}}],["dispatch",{"2":{"34":3}}],["displaylanguage",{"2":{"40":2}}],["display",{"2":{"14":1}}],["dist",{"2":{"34":4,"36":1,"40":2}}],["div",{"2":{"8":6,"11":4,"14":5,"37":2}}],["details",{"2":{"51":1}}],["debounce",{"2":{"47":1}}],["debuganyway",{"2":{"40":2}}],["debug",{"2":{"40":2}}],["deno",{"2":{"40":4}}],["deep",{"2":{"37":2}}],["defineconfig",{"2":{"39":2}}],["defineprops",{"2":{"37":2}}],["defaultformatter",{"2":{"40":8}}],["default",{"2":{"1":2,"11":4,"34":4,"37":12,"39":2,"40":4}}],["description",{"2":{"34":2}}],["designer",{"2":{"40":4}}],["design",{"0":{"30":1},"2":{"54":1}}],["deprecated",{"2":{"43":1}}],["dependencies",{"2":{"34":4}}],["deploy",{"2":{"34":27}}],["delivery",{"2":{"32":1}}],["developer",{"2":{"75":1}}],["devdependencies",{"2":{"39":2,"40":1}}],["dev",{"2":{"4":1,"34":15,"35":2,"39":1,"55":1}}],["devtools",{"2":{"3":1,"43":2}}],["guide",{"2":{"54":2}}],["guides",{"2":{"40":2}}],["gui",{"2":{"45":1}}],["gulp",{"2":{"40":4}}],["generation",{"2":{"55":1}}],["gemfile",{"2":{"40":4}}],["getimageurl",{"2":{"37":4,"38":4}}],["getitem",{"2":{"34":2}}],["getsvgicon",{"2":{"37":6,"38":4}}],["gets",{"2":{"36":4}}],["get",{"2":{"1":2,"4":1,"38":4}}],["gettoken",{"2":{"1":2}}],["getuserdata",{"2":{"1":4}}],["gql",{"2":{"40":4}}],["gz",{"2":{"40":2}}],["gls",{"2":{"40":2}}],["glo",{"2":{"40":2}}],["global",{"2":{"43":1}}],["glob",{"2":{"37":1,"38":4}}],["glg",{"2":{"40":2}}],["governance",{"2":{"40":2}}],["go",{"2":{"40":12}}],["google",{"2":{"2":8,"3":2,"35":1,"54":1,"55":3}}],["g",{"2":{"40":2}}],["grid",{"2":{"51":1,"71":2}}],["grunt",{"2":{"40":4}}],["great",{"2":{"40":2}}],["graphgl",{"2":{"5":1}}],["gh",{"2":{"34":3}}],["gitpod",{"2":{"40":4}}],["gitmessage",{"2":{"40":2}}],["gitmodules",{"2":{"40":2}}],["gitattributes",{"2":{"40":2}}],["gitlens",{"2":{"40":8}}],["gitlab",{"2":{"32":1,"40":4}}],["gitignore",{"2":{"34":2,"40":2}}],["githubpullrequests",{"2":{"40":2}}],["githubissues",{"2":{"40":2}}],["github",{"0":{"34":1},"2":{"32":2,"34":27,"35":3,"40":12,"54":2,"60":1,"74":1}}],["git",{"2":{"32":1,"34":4,"40":20}}],["gatsby",{"2":{"40":10}}],["gateway",{"2":{"3":1}}],["garaguso",{"2":{"30":1}}],["gt",{"2":{"8":24,"10":16,"11":16,"13":2,"14":4,"17":4,"18":2,"19":8,"20":16,"34":27,"36":8,"37":20,"40":3,"53":8,"55":2}}],["gmail",{"2":{"2":1}}],["x",{"2":{"42":4}}],["xshell",{"2":{"40":1}}],["xss",{"2":{"2":1}}],["xo",{"2":{"40":8}}],["xmlhttprequest",{"2":{"55":1}}],["xml",{"2":{"40":8}}],["xaml",{"2":{"40":4}}],["xdv",{"2":{"40":2}}],["xhr",{"2":{"1":1}}],["жизнь",{"2":{"34":1,"45":1}}],["жизненного",{"2":{"11":1}}],["жизни",{"2":{"2":4}}],["жить",{"2":{"7":1}}],["живущий",{"2":{"2":1}}],["железу",{"2":{"55":1}}],["железо",{"2":{"55":1}}],["желательно",{"2":{"54":1}}],["желаю",{"2":{"30":1}}],["жестко",{"2":{"45":1}}],["жесткие",{"2":{"39":1}}],["же",{"2":{"2":2,"7":4,"9":1,"11":3,"16":1,"18":1,"34":1,"35":1,"40":1,"42":1,"43":3,"44":2,"45":1,"46":1,"48":1,"54":1,"55":1}}],["флексбокса",{"2":{"50":1}}],["флагманом",{"2":{"45":1}}],["фоне",{"2":{"45":1}}],["фон",{"2":{"38":1}}],["форсирует",{"2":{"34":1}}],["формочки",{"2":{"55":1}}],["формы",{"2":{"43":1}}],["формальный",{"2":{"11":1}}],["форматировании",{"2":{"55":1}}],["форматирование",{"2":{"40":1}}],["форматирует",{"2":{"40":1}}],["формат",{"2":{"11":1,"38":1}}],["формата",{"2":{"5":1,"55":1}}],["формате",{"2":{"3":1,"11":1,"38":1,"55":1}}],["формируя",{"2":{"9":1}}],["формирует",{"2":{"3":1,"55":1}}],["формирование",{"2":{"1":1}}],["формулу",{"2":{"7":1}}],["форму",{"2":{"2":1,"74":1}}],["фактор",{"2":{"45":1}}],["факт",{"2":{"43":1}}],["фактического",{"2":{"34":1,"55":1}}],["файле",{"2":{"10":1}}],["файлы",{"2":{"9":1,"34":1,"36":1,"39":1,"55":1}}],["файл",{"2":{"9":3,"10":3,"34":4,"37":1,"40":1,"55":2}}],["файлов",{"0":{"25":1},"2":{"9":1,"34":1,"35":1,"37":1,"39":1}}],["файлах",{"2":{"40":1}}],["файла",{"2":{"4":1,"34":3,"55":1}}],["фиксит",{"2":{"46":1}}],["фиксации",{"2":{"26":1}}],["финальном",{"2":{"46":1}}],["фигурные",{"2":{"8":1}}],["футером",{"2":{"46":1}}],["фундаментальное",{"2":{"45":1}}],["фундаментальной",{"2":{"7":1}}],["функционал",{"2":{"46":1,"52":1}}],["функциональной",{"2":{"43":1}}],["функциональностью",{"2":{"11":1}}],["функциональность",{"2":{"7":1,"11":1,"12":1}}],["функциональности",{"2":{"7":3,"26":1}}],["функционала",{"2":{"42":2,"53":1}}],["функциях",{"2":{"45":1}}],["функциями",{"2":{"43":1}}],["функция",{"2":{"11":1,"19":1,"42":1,"43":1,"46":1,"47":1}}],["функцией",{"2":{"11":1,"19":1}}],["функцию",{"2":{"8":1,"19":1,"37":1,"43":1,"47":1}}],["функций",{"2":{"7":2,"11":1,"43":3}}],["функции",{"0":{"25":1},"2":{"3":2,"7":1,"8":1,"11":6,"23":1,"26":1,"30":1,"43":6,"45":1}}],["фулстек",{"2":{"5":1,"40":1}}],["фулстеков",{"2":{"5":1}}],["фрагмента",{"2":{"8":1}}],["фреймворку",{"2":{"16":1}}],["фреймворке",{"2":{"7":1,"42":1,"45":1}}],["фреймворком",{"2":{"6":1,"10":1,"12":1,"26":1,"28":2,"42":1}}],["фреймворков",{"2":{"6":1,"7":2,"27":1,"45":1}}],["фреймворки",{"2":{"6":1,"7":2,"9":1,"20":1,"45":2}}],["фреймворк",{"0":{"6":1,"7":1},"1":{"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1},"2":{"6":1,"7":6,"8":1,"9":1,"19":2,"20":1,"30":1,"43":1}}],["фреймворках",{"0":{"45":1},"2":{"61":1}}],["фреймворка",{"2":{"4":1,"6":1,"7":3,"8":1,"42":2}}],["фронтенда",{"2":{"43":3}}],["фронтенде",{"2":{"43":2,"44":1,"45":2,"46":1,"54":1}}],["фронтендеру",{"2":{"32":1}}],["фронтендера",{"0":{"3":1}}],["фронтендом",{"2":{"4":1}}],["фронтенд",{"0":{"45":1},"2":{"3":1,"35":1,"40":1,"44":1,"45":1,"46":1,"55":1,"58":1,"61":2}}],["фронте",{"2":{"2":3,"5":2,"44":2,"45":1,"46":2,"54":1}}],["фронту",{"2":{"2":1,"3":1}}],["фронт",{"2":{"2":3,"3":2,"40":1}}],["фронта",{"2":{"2":1,"3":1,"45":1}}],["фронтэнде",{"2":{"45":1}}],["фронтэндер",{"2":{"3":1}}],["фронтэнд",{"0":{"46":1},"1":{"47":1,"48":1,"49":1,"50":1,"51":1,"52":1},"2":{"2":1,"3":1,"5":1,"76":1}}],["ей",{"2":{"53":1}}],["единый",{"2":{"53":1}}],["единственный",{"2":{"11":2}}],["единое",{"2":{"9":1}}],["еще",{"0":{"31":1},"2":{"7":1,"9":1,"19":1,"20":1,"27":1,"40":4,"42":1,"45":1,"54":1,"55":2}}],["ее",{"2":{"7":1,"8":1,"10":2,"11":2,"13":1,"46":1}}],["еvent",{"2":{"5":1}}],["ему",{"2":{"2":1,"32":1,"43":1,"55":1}}],["естественно",{"2":{"34":1,"43":1}}],["есть",{"2":{"2":3,"3":4,"6":1,"7":4,"10":2,"11":3,"20":1,"28":1,"34":3,"38":1,"40":1,"41":2,"43":3,"45":3,"46":2,"47":1,"53":1,"54":6,"55":3}}],["если",{"2":{"2":5,"3":2,"4":5,"6":1,"7":1,"9":1,"10":4,"11":2,"13":2,"16":2,"17":1,"20":1,"26":1,"28":2,"34":1,"35":1,"36":2,"38":1,"39":3,"40":1,"42":1,"43":5,"47":2,"48":1,"50":1,"53":1,"54":4,"55":2}}],["её",{"2":{"2":2,"36":1,"45":2,"47":2}}],["его",{"2":{"2":9,"3":2,"4":1,"7":2,"8":2,"10":1,"11":5,"14":2,"19":1,"20":1,"21":1,"34":1,"39":1,"40":2,"43":1,"45":1,"46":3,"52":1,"53":1,"54":1,"55":7,"75":2}}],["jest",{"2":{"40":20,"44":1}}],["jenkins",{"2":{"32":1,"40":4}}],["j",{"2":{"39":1}}],["jpg",{"2":{"38":1}}],["jpeg",{"2":{"35":1}}],["jasmine",{"2":{"40":20}}],["jamesives",{"2":{"34":4}}],["java",{"2":{"6":1,"11":1,"40":2}}],["javascript",{"0":{"69":1},"2":{"3":1,"6":3,"7":2,"8":3,"9":4,"10":6,"11":4,"13":1,"16":1,"17":1,"18":2,"19":2,"26":1,"36":1,"39":2,"40":4,"41":1,"42":2,"43":2,"45":1,"46":1,"53":3,"54":6,"55":4,"69":1}}],["jobs",{"2":{"34":4}}],["jwt",{"2":{"2":4,"75":2}}],["jslint",{"2":{"40":4}}],["jsconfig",{"2":{"40":22}}],["jsconst",{"2":{"34":1,"38":1,"42":1}}],["jsx",{"2":{"40":6}}],["json5",{"2":{"40":2}}],["jsonc",{"2":{"40":2}}],["jsonplaceholder",{"2":{"3":1}}],["json",{"2":{"1":1,"3":1,"5":8,"34":7,"36":1,"38":7,"39":5,"40":96,"54":1,"55":2}}],["jsimport",{"2":{"1":3,"36":1,"39":1}}],["js",{"0":{"30":1,"38":1},"2":{"1":4,"3":3,"9":2,"11":1,"35":1,"36":4,"38":1,"39":5,"40":39,"41":2,"43":1,"45":3,"46":1,"54":3,"55":1}}],["рисуйте",{"2":{"52":1}}],["рисунок",{"2":{"9":1}}],["русском",{"2":{"54":2}}],["рутинного",{"2":{"45":1}}],["рука",{"2":{"40":1}}],["руководству",{"2":{"7":1}}],["рублей",{"2":{"35":1}}],["ручном",{"2":{"34":1,"40":1}}],["ряд",{"2":{"11":2}}],["ряда",{"2":{"9":1}}],["родился",{"2":{"55":1}}],["родительскому",{"2":{"11":1}}],["родительского",{"2":{"10":1,"11":1}}],["роста",{"2":{"11":1,"49":1}}],["роли",{"2":{"45":1}}],["роль",{"2":{"43":1,"45":1,"54":1}}],["ролью",{"2":{"2":1}}],["ролям",{"2":{"2":1}}],["рывка",{"2":{"7":1}}],["резюме",{"2":{"54":1}}],["результирующее",{"2":{"7":1}}],["результат",{"2":{"3":1,"11":1}}],["рефакторинг",{"0":{"49":1},"2":{"49":1}}],["регулярный",{"0":{"49":1}}],["регистрирует",{"2":{"45":1}}],["регистра",{"2":{"24":1}}],["регистре",{"2":{"22":1,"23":1}}],["рекламных",{"2":{"47":1}}],["рекомендует",{"2":{"40":1}}],["рекомендуется",{"2":{"35":1,"39":1}}],["рекомендаций",{"2":{"21":1}}],["реконнект",{"2":{"5":1}}],["редактор",{"2":{"40":1}}],["редакторе",{"2":{"40":1}}],["редко",{"2":{"2":1}}],["режиме",{"2":{"34":1,"40":2,"43":1,"44":1}}],["режима",{"2":{"4":1}}],["репозиторий",{"2":{"40":1}}],["репозитория",{"2":{"34":4}}],["репозитории",{"2":{"32":1}}],["рендерингу",{"2":{"20":1}}],["рендеринге",{"2":{"13":1}}],["реактивная",{"2":{"11":1,"13":2,"42":1,"45":1}}],["реактивный",{"2":{"43":2,"45":2}}],["реактивных",{"2":{"11":1,"42":1,"45":1}}],["реактивным",{"2":{"11":2}}],["реактивными",{"2":{"11":1}}],["реактивные",{"2":{"8":1,"11":2,"23":1,"43":3,"45":2}}],["реактивной",{"2":{"11":1,"13":1}}],["реактивном",{"2":{"7":2,"45":1}}],["реактивностью",{"2":{"45":2}}],["реактивность",{"2":{"7":1,"45":2}}],["реактивности",{"2":{"6":1,"45":2}}],["реактивную",{"2":{"6":1,"11":2,"43":1,"45":1}}],["реально",{"2":{"47":1}}],["реальный",{"2":{"54":1}}],["реальные",{"2":{"44":1}}],["реальным",{"2":{"27":1}}],["реальными",{"2":{"3":1}}],["реальных",{"2":{"7":1}}],["реализацию",{"2":{"47":1}}],["реализация",{"2":{"42":1}}],["реализации",{"2":{"5":1,"20":1,"27":1,"42":2,"52":1}}],["реализованы",{"2":{"6":1,"7":1}}],["решили",{"2":{"46":3}}],["решить",{"2":{"34":1,"36":1}}],["решений",{"2":{"34":1,"55":1}}],["решения",{"2":{"20":1,"55":1}}],["решением",{"2":{"3":1,"40":1}}],["решение",{"2":{"3":1,"4":2,"5":1,"7":1,"45":1,"54":1}}],["решётки",{"2":{"8":1}}],["решали",{"2":{"6":1}}],["решает",{"2":{"2":1,"7":1,"43":1}}],["релевантные",{"2":{"3":1}}],["ресурсы",{"0":{"36":1},"1":{"37":1,"38":1},"2":{"36":4,"39":1,"46":1,"54":1}}],["ресурса",{"2":{"36":1}}],["ресурсах",{"2":{"30":1}}],["ресурсами",{"2":{"3":1,"36":1,"55":2}}],["ресурсам",{"2":{"2":1,"36":1}}],["ресурсов",{"2":{"4":2,"36":1,"55":1}}],["ресурсу",{"2":{"2":1,"4":2}}],["ресурс",{"2":{"2":2,"4":2,"54":1}}],["рано",{"2":{"47":1}}],["раньше",{"2":{"40":1}}],["ранее",{"2":{"10":1,"34":1}}],["равна",{"2":{"14":1}}],["равно",{"2":{"11":1,"14":1,"54":1}}],["рабочий",{"2":{"9":1,"30":1,"32":2}}],["рабочего",{"2":{"8":1,"9":1,"10":1,"11":1,"30":1}}],["работу",{"2":{"44":1}}],["работе",{"2":{"20":1,"28":1,"40":2,"45":2}}],["работали",{"2":{"11":1}}],["работают",{"2":{"3":1,"10":1,"43":1}}],["работать",{"2":{"3":1,"5":1,"7":1,"9":1,"20":1,"40":2,"43":1,"55":1}}],["работает",{"2":{"2":2,"40":1,"42":3,"45":1,"47":1,"54":1,"55":2}}],["работы",{"2":{"2":1,"3":1,"4":1,"7":1,"10":1,"19":1,"27":1,"28":1,"36":1,"41":1,"55":2,"75":3}}],["рамками",{"2":{"10":1}}],["рамках",{"2":{"7":1,"12":1}}],["рамки",{"2":{"6":1,"7":1}}],["расшаривать",{"2":{"43":1}}],["расширить",{"2":{"54":1}}],["расширяемость",{"2":{"53":1}}],["расширять",{"2":{"7":1,"39":1}}],["расширении",{"2":{"45":1}}],["расширений",{"2":{"40":1}}],["расширением",{"2":{"10":1}}],["расширения",{"2":{"4":1,"40":2}}],["располагались",{"2":{"53":1}}],["расползлись",{"2":{"43":1}}],["располнела",{"2":{"42":1}}],["распределение",{"2":{"55":1}}],["распределяются",{"2":{"2":1}}],["распространяющихся",{"2":{"10":1}}],["распространены",{"2":{"54":1}}],["распространенного",{"2":{"53":1}}],["распространенность",{"2":{"45":1}}],["распространенные",{"2":{"45":1}}],["распространенными",{"2":{"6":1}}],["распространенный",{"2":{"2":1}}],["распространения",{"2":{"8":1}}],["раскрывает",{"2":{"8":1}}],["рассказано",{"2":{"18":1}}],["рассказать",{"2":{"7":1}}],["рассмотрен",{"2":{"30":1}}],["рассмотрим",{"2":{"6":1,"7":1,"8":1,"10":2,"11":1,"12":1,"18":1,"20":2,"30":1}}],["рассматривает",{"2":{"55":1}}],["рассматривать",{"2":{"9":1,"11":1}}],["рассматриваться",{"2":{"8":1}}],["рассматриваются",{"2":{"6":1}}],["раздаются",{"2":{"55":1}}],["разделять",{"2":{"43":1}}],["разделах",{"2":{"10":1,"61":1}}],["раздела",{"2":{"10":1}}],["разделив",{"2":{"7":1}}],["разделение",{"2":{"53":1}}],["разделения",{"2":{"10":1}}],["разделенных",{"2":{"4":1}}],["разделе",{"2":{"4":1,"8":1,"19":1}}],["разделы",{"2":{"2":1}}],["разбираться",{"2":{"55":1}}],["разбивается",{"2":{"46":1}}],["разбиения",{"2":{"45":2}}],["раза",{"2":{"43":1}}],["развитие",{"0":{"74":1}}],["развития",{"2":{"6":1}}],["развивается",{"2":{"45":1}}],["развертывания",{"2":{"32":1,"34":1}}],["развертывание",{"2":{"30":1}}],["развертыванием",{"2":{"30":1,"34":1}}],["размонтировании",{"2":{"20":1}}],["разместить",{"2":{"35":3}}],["разместим",{"2":{"10":1}}],["размер",{"2":{"11":1,"36":2,"47":1}}],["размера",{"2":{"7":3,"36":1}}],["размещено",{"2":{"8":1}}],["размещения",{"2":{"3":1,"8":1,"35":1,"55":1}}],["разметки",{"2":{"6":1}}],["различающихся",{"2":{"43":1}}],["различный",{"2":{"10":1}}],["различные",{"2":{"6":2}}],["различных",{"2":{"6":1,"54":1}}],["различными",{"2":{"3":1,"30":1,"45":1}}],["различие",{"2":{"6":1,"7":1}}],["разряда",{"2":{"50":1}}],["разрабатываешь",{"2":{"46":1}}],["разрабатываемого",{"2":{"32":1}}],["разрабатывать",{"2":{"45":1,"46":1,"55":1}}],["разработка",{"2":{"44":1,"61":1,"63":1,"64":1}}],["разработкой",{"2":{"44":1}}],["разработку",{"2":{"7":1,"45":1,"53":2}}],["разработки",{"2":{"7":2,"11":1,"35":1,"40":3,"44":1,"45":1,"46":1}}],["разработке",{"2":{"4":1,"28":1,"40":1,"55":1}}],["разработан",{"2":{"7":1}}],["разработчиком",{"2":{"54":1}}],["разработчиков",{"2":{"21":1,"44":1,"54":1,"76":1}}],["разработчики",{"2":{"53":2}}],["разработчику",{"2":{"53":1,"54":1}}],["разработчика",{"2":{"8":1,"43":2,"52":1,"54":1,"75":1}}],["разработчик",{"2":{"3":1,"7":1,"43":1}}],["разрешили",{"2":{"55":1}}],["разрешает",{"2":{"4":1}}],["разрешать",{"2":{"2":1}}],["разрешен",{"2":{"4":3}}],["разрешений",{"2":{"46":1}}],["разрешения",{"2":{"2":1}}],["разрешение",{"2":{"2":2}}],["разному",{"2":{"55":1}}],["разного",{"2":{"45":1}}],["разницей",{"2":{"16":1}}],["разница",{"2":{"7":1,"28":1,"54":1}}],["разницы",{"2":{"2":1}}],["разных",{"2":{"4":1,"43":1,"46":1,"61":1}}],["разный",{"2":{"2":1}}],["разные",{"0":{"11":1},"2":{"2":1,"39":1,"46":1,"55":1}}],["раз",{"2":{"2":3,"7":1,"11":1,"13":1,"39":2,"43":1,"55":1}}],["sw",{"2":{"55":1,"75":1}}],["swagger",{"2":{"54":1}}],["svelte",{"2":{"40":6,"45":3}}],["svgo",{"2":{"40":20}}],["svgresources",{"2":{"38":8}}],["svg",{"2":{"37":4,"38":3,"39":1,"40":4}}],["synctex",{"2":{"40":2}}],["sass",{"2":{"40":2}}],["save",{"2":{"40":2}}],["smoothscrolling",{"2":{"40":2}}],["sftp",{"2":{"40":1}}],["sfc",{"2":{"10":3,"19":1,"20":1,"40":2,"45":1}}],["s3",{"2":{"35":1}}],["s",{"2":{"34":2,"36":1,"39":1,"43":1}}],["solvery",{"2":{"54":1}}],["somearr",{"2":{"45":8}}],["someimage",{"2":{"36":2}}],["somefunc",{"2":{"3":1}}],["social",{"2":{"36":1}}],["source",{"2":{"34":2,"40":6}}],["snickerbockers",{"2":{"34":3}}],["snake",{"2":{"23":1}}],["ssg",{"0":{"55":1},"2":{"55":3}}],["ssd",{"2":{"40":1}}],["ssr",{"0":{"55":1},"2":{"40":2,"43":2,"55":9}}],["ss06",{"2":{"40":2}}],["ss03",{"2":{"40":2}}],["ss02",{"2":{"40":2}}],["ss01",{"2":{"40":2}}],["ssl",{"2":{"35":2}}],["ssh",{"2":{"34":23,"40":2}}],["sso",{"2":{"2":2}}],["store",{"2":{"43":2}}],["story",{"2":{"40":2}}],["sticky",{"2":{"40":2}}],["stickyscroll",{"2":{"40":2}}],["staged",{"2":{"40":4}}],["staging",{"2":{"34":6}}],["stackblitz",{"2":{"40":5}}],["stateful",{"2":{"43":1}}],["state",{"0":{"43":1},"2":{"40":2,"43":5}}],["static",{"2":{"36":2,"55":1}}],["stash",{"2":{"40":6}}],["stringhelpers",{"2":{"46":1}}],["string",{"2":{"36":2,"37":12}}],["steps",{"2":{"34":4}}],["stylelint",{"2":{"40":8}}],["styleci",{"2":{"40":4}}],["style=",{"2":{"37":4}}],["style",{"2":{"10":5,"37":4,"40":1,"54":2}}],["sponsors",{"2":{"40":2}}],["spec",{"2":{"40":2}}],["special",{"2":{"20":1}}],["span",{"2":{"17":5}}],["spa",{"0":{"55":1},"2":{"2":1,"55":10}}],["sum",{"2":{"40":4}}],["suggestselection",{"2":{"40":2}}],["substring",{"2":{"38":4}}],["submodules",{"2":{"34":6}}],["sudo",{"2":{"34":6}}],["suspense",{"2":{"20":1}}],["supabase",{"2":{"3":2,"54":1}}],["sheet",{"0":{"67":1},"1":{"68":1,"69":1,"70":1,"71":1,"72":1,"73":1},"2":{"68":1,"69":1,"70":1,"71":4}}],["shell",{"2":{"40":2,"46":1}}],["shims",{"2":{"40":2}}],["sh",{"2":{"40":4}}],["shrinkwrap",{"2":{"40":4}}],["shnpx",{"2":{"39":1}}],["shpnpm",{"2":{"39":1}}],["showdocumentation",{"2":{"40":2}}],["showsuggestionsassnippets",{"2":{"40":2}}],["show=",{"2":{"14":2}}],["show",{"0":{"14":1},"2":{"14":1,"16":3,"20":1}}],["shallowref",{"2":{"42":2}}],["shaking",{"2":{"38":2,"47":1}}],["sha",{"2":{"7":1}}],["sharing",{"2":{"4":1}}],["src",{"2":{"13":1,"36":1,"39":4}}],["src=",{"2":{"8":2,"13":2,"36":6,"37":2}}],["scmitem",{"2":{"40":2}}],["scmgroupinline",{"2":{"40":2}}],["scmgroup",{"2":{"40":2}}],["scm",{"2":{"40":4}}],["scss",{"2":{"37":2,"40":2}}],["scoped",{"2":{"10":4,"37":2}}],["scripts",{"2":{"34":2}}],["script",{"0":{"11":1},"2":{"8":10,"10":5,"11":15,"20":4,"34":4,"37":4,"40":1,"42":1}}],["sql",{"2":{"5":1,"34":2,"40":1,"43":2,"54":1}}],["side",{"2":{"55":1}}],["simple",{"2":{"40":8}}],["simpledialog",{"2":{"40":2}}],["size",{"2":{"37":10}}],["size=",{"2":{"36":2}}],["site",{"2":{"4":4,"34":25,"55":1}}],["sign",{"2":{"2":1}}],["singlequote",{"2":{"40":2}}],["singleclick",{"2":{"40":2}}],["single",{"2":{"2":1,"55":1}}],["seo",{"0":{"55":1},"2":{"55":1}}],["section",{"2":{"51":1}}],["security",{"2":{"40":2}}],["secrets",{"2":{"34":3}}],["sentry",{"2":{"40":4}}],["semi",{"2":{"40":2}}],["search",{"2":{"40":2}}],["separate",{"2":{"40":2}}],["select",{"2":{"18":1,"53":2}}],["server",{"2":{"4":4,"34":5,"40":10,"55":1}}],["service",{"2":{"3":1,"26":1,"40":2,"55":3,"75":1}}],["services",{"2":{"1":2}}],["setsomearr",{"2":{"45":2}}],["setitem",{"2":{"34":2}}],["setting",{"2":{"34":2,"40":1}}],["settings",{"2":{"34":1,"40":1}}],["settokencallback",{"2":{"1":2}}],["setup",{"0":{"11":1},"2":{"10":3,"11":8,"20":2,"34":7,"37":2,"40":1,"42":1}}],["setlogoutcallback",{"2":{"1":2}}],["set",{"2":{"1":2,"38":4}}],["setbaseurl",{"2":{"1":2}}],["пытаться",{"2":{"46":1}}],["пытаются",{"2":{"46":1}}],["пытается",{"2":{"40":1}}],["п",{"2":{"44":1,"46":1,"75":1}}],["пк",{"2":{"40":2}}],["песочницы",{"2":{"40":1}}],["песочнице",{"2":{"39":1}}],["пет",{"2":{"34":1}}],["первых",{"2":{"54":1,"76":1}}],["первый",{"2":{"11":1}}],["первой",{"2":{"54":1,"55":1}}],["первоначальном",{"2":{"13":1}}],["первого",{"2":{"8":1}}],["первоклассные",{"2":{"6":1}}],["первом",{"2":{"2":2,"55":1}}],["переименовывая",{"2":{"49":1}}],["переименовываются",{"2":{"36":1}}],["перемещая",{"2":{"49":1}}],["переменным",{"2":{"11":2}}],["переменными",{"2":{"11":1}}],["переменные",{"0":{"22":1},"2":{"8":1,"10":1,"11":4,"43":1,"45":2}}],["переменных",{"2":{"7":1,"11":1,"20":1,"42":1}}],["переменной",{"2":{"7":2,"8":1,"11":3,"13":2,"18":2,"20":2,"42":2,"43":1,"45":2}}],["переменная",{"2":{"7":2,"8":1,"11":1,"13":3,"14":2,"45":2}}],["переменную",{"2":{"7":1,"11":2,"14":1,"19":1,"43":2,"45":1}}],["переписывание",{"2":{"44":1}}],["переписываете",{"2":{"43":1}}],["пересылает",{"2":{"55":1}}],["пересылаемый",{"2":{"2":1}}],["перестанет",{"2":{"47":1}}],["перестает",{"2":{"43":1}}],["пересчитали",{"2":{"45":1}}],["перезагрузку",{"2":{"34":1}}],["переведена",{"0":{"31":1}}],["перевести",{"2":{"5":1}}],["переносится",{"2":{"40":1}}],["переносить",{"2":{"20":1}}],["переносе",{"2":{"6":1}}],["переключаться",{"2":{"16":1}}],["перекрестного",{"2":{"4":1}}],["перерасти",{"2":{"7":1}}],["передавать",{"2":{"45":1}}],["передавая",{"2":{"8":1}}],["переданным",{"2":{"16":1}}],["передачи",{"2":{"11":1}}],["передать",{"2":{"10":1,"43":2}}],["передаем",{"2":{"8":1}}],["передаёт",{"2":{"2":1}}],["перед",{"2":{"7":2,"11":1,"36":1,"54":1}}],["переходов",{"2":{"20":1}}],["перехода",{"2":{"20":1,"32":1}}],["переход",{"2":{"5":1,"48":1}}],["перелогиниваться",{"2":{"2":1}}],["перелогин",{"2":{"2":1}}],["пять",{"2":{"17":1}}],["пишет",{"2":{"55":1}}],["пишем",{"2":{"10":1}}],["пишутся",{"2":{"22":1,"25":1}}],["писать",{"2":{"11":1,"26":1,"43":1,"45":1}}],["памяти",{"2":{"40":1}}],["папке",{"2":{"36":1}}],["папки",{"2":{"36":2}}],["папку",{"2":{"36":3}}],["пабло",{"2":{"30":1}}],["паттерн",{"2":{"42":1}}],["паттернов",{"2":{"27":1}}],["паттерны",{"2":{"6":2,"30":2,"53":1}}],["пакетов",{"2":{"40":1}}],["пакетами",{"2":{"39":1}}],["пакета",{"2":{"11":1,"41":1}}],["пакет",{"2":{"9":1,"40":1,"47":1}}],["пару",{"2":{"40":1,"42":1,"50":1}}],["параграфы",{"2":{"54":1}}],["параметрами",{"2":{"34":1}}],["параметры",{"2":{"11":2}}],["парадигму",{"2":{"6":1}}],["парадигмы",{"2":{"6":2}}],["пароль",{"2":{"2":1,"43":1}}],["паутина",{"2":{"6":1}}],["пусть",{"2":{"46":1,"50":1}}],["пуша",{"2":{"34":1}}],["публикации",{"2":{"30":1}}],["путях",{"2":{"39":1}}],["путь",{"0":{"9":2},"2":{"10":1,"27":1}}],["путем",{"2":{"4":1}}],["пупкина",{"2":{"2":1}}],["пупкин",{"2":{"2":1}}],["плевел",{"2":{"54":1}}],["плохие",{"2":{"53":1}}],["плохо",{"2":{"53":1}}],["плохой",{"2":{"42":1}}],["плохая",{"2":{"43":2}}],["платежей",{"2":{"46":1}}],["платить",{"2":{"11":1}}],["плане",{"2":{"42":1,"43":1,"53":1}}],["планами",{"2":{"35":1}}],["планы",{"2":{"3":2}}],["плагина",{"2":{"55":1}}],["плагинами",{"2":{"39":1}}],["плагины",{"2":{"6":1,"39":1,"43":1}}],["плагинов",{"2":{"6":1,"10":1,"39":1,"40":1}}],["плюсы",{"2":{"53":2}}],["плюс",{"2":{"2":1,"11":1,"34":1,"43":1}}],["покупателей",{"2":{"55":1}}],["показ",{"2":{"46":1}}],["показывали",{"2":{"54":1,"55":1}}],["показывать",{"2":{"45":1,"55":1}}],["показываться",{"2":{"16":1}}],["показывания",{"2":{"34":1}}],["показывают",{"2":{"16":1}}],["показывая",{"2":{"16":1}}],["показывает",{"2":{"14":1}}],["показа",{"2":{"16":2,"36":1}}],["показано",{"2":{"11":1}}],["показаться",{"2":{"10":3}}],["пока",{"2":{"6":1,"7":1,"10":1,"20":2}}],["поисковых",{"2":{"55":1}}],["поисковиков",{"2":{"55":1}}],["поисковик",{"2":{"55":1}}],["поисковиками",{"2":{"55":1}}],["поискать",{"2":{"38":1}}],["поиграйте",{"2":{"54":1}}],["поизучайте",{"2":{"54":1}}],["поэкспериментируйте",{"2":{"54":1}}],["поэтому",{"2":{"7":1,"8":1,"9":1,"11":2,"20":2,"26":1,"27":1,"40":2,"42":1,"43":1,"45":1,"46":1,"55":1}}],["почти",{"2":{"54":1}}],["почему",{"2":{"5":1,"28":2,"45":1,"53":1,"54":1}}],["похудеет",{"2":{"42":1}}],["похожи",{"2":{"16":1}}],["похакать",{"2":{"3":1}}],["повышение",{"2":{"76":1}}],["повышает",{"2":{"46":1}}],["повышается",{"2":{"46":1,"55":1}}],["повысит",{"2":{"52":1}}],["повысить",{"2":{"30":1,"46":1}}],["повторяющегося",{"2":{"45":1}}],["повторно",{"2":{"11":1}}],["повторного",{"2":{"11":1}}],["поверх",{"2":{"7":2}}],["поведение",{"2":{"6":1,"12":1,"45":1}}],["поведением",{"2":{"6":1}}],["поговорим",{"2":{"10":1}}],["помещаться",{"2":{"36":1}}],["помещаются",{"2":{"36":1}}],["поместить",{"2":{"46":1}}],["поместит",{"2":{"10":1}}],["помнить",{"2":{"9":1,"10":1,"43":1}}],["поможет",{"2":{"54":1}}],["помогает",{"2":{"20":1,"54":1}}],["помогают",{"2":{"9":1,"53":1,"54":1}}],["помогающая",{"2":{"7":1}}],["помогут",{"2":{"6":1,"21":1}}],["помочь",{"2":{"4":1,"28":1,"54":1}}],["помощью",{"2":{"3":1,"10":2,"11":1,"19":2,"20":1,"30":3,"35":1,"40":1,"43":1}}],["поймать",{"2":{"42":1}}],["поймем",{"2":{"7":1}}],["пойдет",{"2":{"3":1}}],["потратьте",{"2":{"40":1,"50":1}}],["потребует",{"2":{"7":1}}],["потери",{"2":{"38":1}}],["потерять",{"2":{"2":1}}],["потом",{"2":{"43":2,"55":2}}],["потомок",{"2":{"43":1}}],["потомком",{"2":{"43":1}}],["потому",{"2":{"34":1,"43":1,"55":1}}],["потоке",{"2":{"45":1}}],["потоком",{"2":{"10":1,"11":1,"30":2,"45":1}}],["поток",{"2":{"7":1,"42":1}}],["поздно",{"2":{"47":1}}],["позаботится",{"2":{"11":1}}],["позже",{"2":{"8":1,"20":1,"55":1}}],["позволяют",{"2":{"35":1,"39":1}}],["позволяющие",{"2":{"6":1}}],["позволяющий",{"2":{"4":1}}],["позволяя",{"2":{"32":1}}],["позволяет",{"2":{"7":1,"10":1,"20":1,"34":1,"40":1,"43":1,"45":2,"46":2,"55":2}}],["познакомимся",{"2":{"6":1,"30":1}}],["появляются",{"2":{"40":1}}],["появления",{"2":{"55":1}}],["появлению",{"2":{"11":1}}],["появлением",{"2":{"6":1}}],["появятся",{"2":{"20":1}}],["появилась",{"2":{"45":1}}],["появился",{"2":{"43":1,"55":1}}],["появилось",{"2":{"42":1,"43":1}}],["появились",{"2":{"6":1,"43":1}}],["появится",{"2":{"4":1,"14":1}}],["попробуйте",{"2":{"38":1,"40":1,"54":2}}],["попробует",{"2":{"38":1}}],["попутно",{"2":{"6":1}}],["популярна",{"2":{"42":1}}],["популярности",{"2":{"40":1}}],["популярность",{"2":{"26":1}}],["популярным",{"2":{"55":1}}],["популярные",{"2":{"39":1}}],["популярных",{"2":{"6":1}}],["популярный",{"2":{"3":1,"34":1}}],["популяризация",{"2":{"5":2}}],["попытка",{"2":{"5":1}}],["поработайте",{"2":{"54":2}}],["порой",{"2":{"54":1}}],["порог",{"2":{"45":1}}],["порождает",{"2":{"9":1}}],["порекомендовать",{"2":{"26":1}}],["порядки",{"2":{"55":1}}],["порядке",{"2":{"9":1}}],["порядка",{"2":{"9":1}}],["порядок",{"2":{"5":1}}],["пор",{"2":{"7":1,"9":1,"19":1,"20":1}}],["портом",{"2":{"4":1}}],["портал",{"2":{"2":1}}],["посмотрите",{"2":{"40":1,"54":1}}],["посмотреть",{"2":{"7":1,"39":1,"40":1,"54":1,"55":1}}],["поскольку",{"2":{"7":1,"8":1,"11":1,"20":1,"21":1}}],["последовательной",{"2":{"26":1}}],["последние",{"2":{"42":1}}],["последних",{"2":{"34":1}}],["последней",{"2":{"10":1}}],["последняя",{"2":{"6":1}}],["после",{"2":{"5":1,"16":1,"19":1,"32":1,"34":2,"35":1,"43":1,"55":3}}],["посылать",{"2":{"5":1}}],["посредником",{"2":{"4":1}}],["построения",{"2":{"7":3}}],["построен",{"2":{"7":1,"9":1}}],["построенные",{"2":{"7":1,"43":1}}],["построены",{"2":{"7":1}}],["построить",{"2":{"7":1}}],["постепенно",{"2":{"6":1,"7":1}}],["поставщиков",{"2":{"5":1}}],["поставив",{"2":{"3":1}}],["поставить",{"2":{"3":1,"40":1}}],["постоянным",{"2":{"2":1}}],["поняв",{"2":{"20":1}}],["понятную",{"2":{"53":1}}],["понятные",{"2":{"39":1}}],["понятным",{"2":{"5":1}}],["понять",{"2":{"21":1,"43":1,"54":1}}],["понятий",{"2":{"9":1}}],["понятиями",{"2":{"30":1}}],["понятия",{"2":{"7":1,"9":1,"27":1,"46":1}}],["понятии",{"2":{"7":1}}],["понятие",{"2":{"2":1,"8":1,"45":1}}],["поначалу",{"2":{"10":1}}],["понадобится",{"2":{"8":1,"39":1}}],["понимаются",{"2":{"36":1}}],["понимание",{"0":{"10":1},"2":{"54":1}}],["понимать",{"2":{"2":1,"7":1,"54":1}}],["подгружается",{"2":{"55":1}}],["подготовки",{"2":{"54":1}}],["подготовлены",{"2":{"20":1}}],["подарила",{"2":{"55":1}}],["подскажите",{"0":{"41":1}}],["подсоединение",{"2":{"40":1}}],["поделился",{"2":{"40":1}}],["подключать",{"2":{"36":1,"43":1,"47":2}}],["подключаются",{"2":{"36":1}}],["подключить",{"2":{"35":1}}],["под",{"2":{"36":1,"44":1,"45":1}}],["поддается",{"2":{"55":1}}],["поддержка",{"2":{"43":2}}],["поддержки",{"2":{"42":2,"54":1}}],["поддержкой",{"2":{"39":1}}],["поддерживаемость",{"2":{"53":1}}],["поддерживается",{"2":{"10":1,"11":2,"38":1}}],["поддерживать",{"2":{"46":1}}],["поддерживаться",{"2":{"43":1,"47":1}}],["поддерживая",{"2":{"18":1}}],["поддиректории",{"2":{"36":1}}],["поддиректориями",{"2":{"34":1}}],["поддомены",{"2":{"35":1}}],["подведение",{"0":{"27":1}}],["подчеркивания",{"2":{"22":1}}],["подчеркивает",{"2":{"7":1}}],["подразумевается",{"2":{"55":1}}],["подразумевает",{"2":{"7":1}}],["подробно",{"2":{"10":2,"11":1,"30":1,"36":1}}],["подробная",{"2":{"4":1}}],["подробнее",{"2":{"2":1,"18":1,"39":1}}],["подход",{"2":{"53":1,"55":1}}],["подходящая",{"2":{"46":1}}],["подходящем",{"2":{"3":1}}],["подходят",{"2":{"43":1}}],["подходит",{"2":{"40":1,"45":1,"46":1,"55":2}}],["подходы",{"2":{"11":1,"45":1}}],["подходу",{"2":{"7":1}}],["подходов",{"2":{"7":1}}],["подхода",{"2":{"7":1,"11":1}}],["подобранных",{"2":{"40":1}}],["подобные",{"2":{"55":1}}],["подобный",{"2":{"3":1,"4":1,"53":1}}],["подобно",{"2":{"17":1}}],["подобном",{"2":{"11":1}}],["подождите",{"2":{"11":1}}],["подозрительные",{"2":{"2":1}}],["подписывания",{"2":{"2":1}}],["полиморфизмом",{"2":{"46":1}}],["полтора",{"2":{"43":1}}],["пользоваться",{"2":{"43":1,"45":1,"53":1}}],["пользователем",{"2":{"45":1,"46":1}}],["пользователей",{"2":{"6":1,"44":1,"46":1,"55":2}}],["пользователю",{"2":{"2":1,"34":1,"45":1}}],["пользователи",{"2":{"2":1}}],["пользователям",{"2":{"2":1}}],["пользователя",{"2":{"2":7,"30":1,"34":1,"46":1,"55":3,"75":1}}],["пользовательский",{"2":{"55":1}}],["пользовательских",{"2":{"7":2}}],["пользовательского",{"2":{"10":2,"18":1,"30":1}}],["пользователь",{"2":{"2":6,"18":1,"20":1,"42":1,"43":1,"45":2}}],["пользуется",{"2":{"43":1}}],["положить",{"2":{"36":1}}],["полный",{"2":{"19":1,"43":1}}],["полностью",{"2":{"7":1,"11":1,"16":1}}],["полноценное",{"2":{"3":1}}],["полноценной",{"2":{"3":1}}],["полно",{"2":{"3":1,"53":1}}],["полезен",{"2":{"54":1,"55":1}}],["полезно",{"2":{"49":1}}],["полезность",{"2":{"44":1}}],["полезного",{"2":{"40":1}}],["полезной",{"2":{"34":1}}],["полезные",{"0":{"42":1},"2":{"40":1,"46":1,"54":1,"64":1}}],["полезных",{"2":{"40":1}}],["полезны",{"2":{"32":1,"44":1,"55":1}}],["поле",{"2":{"11":2,"17":1,"43":1,"45":1}}],["полей",{"2":{"8":1}}],["полями",{"2":{"10":1,"11":1}}],["поля",{"2":{"8":1,"11":3,"45":1}}],["получения",{"2":{"11":1}}],["получении",{"2":{"2":1}}],["получится",{"2":{"54":1}}],["получит",{"2":{"13":1}}],["получить",{"2":{"2":1,"11":3,"32":1,"35":1,"55":1}}],["получил",{"2":{"11":1}}],["получать",{"2":{"3":1,"54":1,"55":1}}],["получаете",{"2":{"35":1}}],["получается",{"2":{"11":1,"34":1,"36":1,"42":1,"46":1,"55":3}}],["получает",{"2":{"2":1,"4":1,"55":1}}],["по",{"2":{"2":4,"3":3,"4":3,"6":4,"7":3,"8":1,"9":1,"11":3,"17":1,"19":1,"27":2,"34":2,"35":1,"36":4,"37":1,"39":2,"40":2,"42":2,"43":5,"44":1,"46":2,"52":1,"53":1,"54":7,"55":8,"76":1}}],["прямым",{"2":{"43":1}}],["прямо",{"2":{"40":1}}],["пр",{"2":{"39":1}}],["прекрасный",{"2":{"54":1}}],["презентационный",{"2":{"53":1}}],["претенциозной",{"2":{"42":1}}],["претерпела",{"2":{"6":1}}],["префикс",{"2":{"13":1}}],["превзойти",{"2":{"11":1}}],["превратится",{"2":{"19":1}}],["превратятся",{"2":{"11":1}}],["превращается",{"2":{"10":1}}],["преобразования",{"2":{"9":1}}],["преследуете",{"2":{"8":1}}],["преимуществом",{"2":{"9":1,"10":1}}],["преимуществами",{"2":{"7":2,"43":1}}],["преимуществ",{"2":{"7":1,"11":2}}],["преимущественно",{"2":{"5":1,"43":1,"45":1}}],["прежде",{"2":{"7":1}}],["прежним",{"2":{"5":1,"6":1}}],["предисловие",{"0":{"76":1}}],["предварительный",{"2":{"54":1}}],["предварительно",{"2":{"54":2,"55":1}}],["предыдущую",{"2":{"54":1}}],["предыдущий",{"2":{"19":1}}],["предыдущие",{"2":{"19":1}}],["предыдущих",{"2":{"10":1}}],["предназначались",{"2":{"54":1}}],["предназначенных",{"2":{"6":1}}],["пределами",{"2":{"43":1,"45":1}}],["пределы",{"2":{"20":2}}],["преданность",{"2":{"30":1}}],["предпочтительно",{"2":{"16":1}}],["предписаны",{"2":{"26":1}}],["предписано",{"2":{"20":1}}],["предписанный",{"2":{"10":1}}],["предписывает",{"2":{"7":1,"9":1,"11":1}}],["предписывается",{"2":{"7":1}}],["предписывают",{"2":{"7":1}}],["предусмотрены",{"2":{"12":1}}],["предотвращая",{"2":{"10":1}}],["предоставления",{"2":{"4":1}}],["предоставляющих",{"2":{"26":1}}],["предоставляются",{"2":{"12":1}}],["предоставляют",{"2":{"3":1,"6":1,"7":1,"35":1,"53":1}}],["предоставлять",{"2":{"4":1,"43":1}}],["предоставляется",{"2":{"4":1,"20":1}}],["предоставляет",{"2":{"3":4,"4":1,"6":1,"11":1,"19":2,"20":1}}],["представьте",{"2":{"43":1}}],["представим",{"2":{"30":1}}],["представить",{"2":{"9":1}}],["представления",{"2":{"45":1}}],["представление",{"2":{"6":1,"9":2,"30":1}}],["представлять",{"2":{"43":1}}],["представляют",{"2":{"9":1}}],["представляет",{"2":{"7":1,"10":1}}],["представлял",{"2":{"6":1}}],["предстоит",{"2":{"7":1}}],["предложил",{"2":{"54":1,"55":1}}],["предложить",{"2":{"7":1,"74":1}}],["предложений",{"2":{"45":1}}],["предложения",{"2":{"16":1}}],["предлагает",{"2":{"7":1,"9":1}}],["предлагаемого",{"2":{"7":1}}],["предлагают",{"2":{"53":1,"54":1}}],["предлагаю",{"2":{"5":1}}],["предлагающих",{"2":{"3":1}}],["предмет",{"2":{"3":1}}],["практик",{"2":{"30":1,"54":1,"75":1}}],["практикой",{"2":{"21":1,"42":1}}],["практиками",{"2":{"54":1}}],["практика",{"2":{"10":1,"43":1}}],["практике",{"2":{"7":1,"10":1}}],["практики",{"2":{"2":1,"6":1,"53":1,"54":1}}],["правильных",{"2":{"54":1}}],["правильно",{"2":{"10":1}}],["правила",{"2":{"6":1,"7":1,"10":1,"45":1}}],["правая",{"2":{"40":1}}],["права",{"2":{"2":1}}],["право",{"2":{"2":3}}],["промисов",{"2":{"54":1}}],["промежуточного",{"2":{"45":1}}],["пройти",{"2":{"54":1}}],["проапгрейдиться",{"2":{"53":1}}],["профессионального",{"2":{"49":1}}],["профессиональной",{"2":{"30":1}}],["прогон",{"2":{"44":1}}],["програмную",{"2":{"55":1}}],["программными",{"2":{"45":1}}],["программных",{"2":{"30":1}}],["программно",{"2":{"7":1}}],["программной",{"2":{"6":1,"7":1}}],["программного",{"2":{"5":1,"6":1,"30":1,"44":1}}],["программы",{"2":{"7":1,"10":1,"35":1,"40":1,"42":1,"45":2}}],["программировать",{"2":{"46":1}}],["программированию",{"2":{"54":2}}],["программирование",{"2":{"45":1}}],["программировании",{"2":{"7":4}}],["программирования",{"2":{"3":2,"6":2,"7":1,"45":2}}],["программиста",{"2":{"46":1}}],["программистам",{"2":{"45":1}}],["программистов",{"2":{"45":1,"76":1}}],["программистские",{"2":{"45":1}}],["программист",{"2":{"7":2,"42":1,"45":1}}],["программу",{"2":{"7":1}}],["программа",{"2":{"4":1,"7":1}}],["прогрессивность",{"2":{"7":1}}],["прогрессивного",{"2":{"6":1}}],["прогрессивные",{"2":{"30":1}}],["прогрессивным",{"2":{"28":1}}],["прогрессивный",{"0":{"7":1},"2":{"6":1,"7":2}}],["прогрессивных",{"2":{"6":1}}],["процентов",{"2":{"42":1}}],["процессор",{"2":{"26":1,"40":1}}],["процесс",{"2":{"9":1,"32":1,"44":1}}],["процесса",{"2":{"8":1,"11":1,"34":1}}],["процессе",{"2":{"7":1,"9":1}}],["прочесть",{"2":{"55":1}}],["прочих",{"2":{"55":1}}],["прочим",{"2":{"46":1}}],["прочие",{"2":{"36":1}}],["прочтение",{"2":{"30":1}}],["прозрачное",{"2":{"34":1}}],["прозрачный",{"2":{"2":1,"38":1}}],["проиграет",{"2":{"55":1}}],["проиндексировать",{"2":{"55":1}}],["происходит",{"2":{"55":1}}],["происходить",{"2":{"34":1,"43":1}}],["произошло",{"2":{"43":1}}],["производительное",{"2":{"45":1}}],["производительность",{"2":{"16":1,"30":1,"47":1}}],["производительности",{"2":{"7":2,"42":1,"43":1,"55":1}}],["производительней",{"2":{"40":1}}],["продакшне",{"2":{"44":1}}],["продуктовый",{"2":{"54":1}}],["продукт",{"2":{"32":1}}],["продукта",{"2":{"30":1}}],["продвинутые",{"2":{"30":1}}],["продвижения",{"2":{"6":1,"19":1,"27":1}}],["прошли",{"2":{"27":1}}],["проп",{"2":{"43":1}}],["пропсов",{"2":{"43":1}}],["пропсы",{"0":{"22":1},"2":{"43":1}}],["прописать",{"2":{"34":1}}],["прописано",{"2":{"17":1}}],["прописаны",{"2":{"7":1}}],["проявляется",{"2":{"44":1}}],["проявившиеся",{"2":{"11":1}}],["проясняться",{"2":{"11":1}}],["проектов",{"2":{"39":1,"45":1,"53":1}}],["проекте",{"2":{"34":1,"39":1,"43":1,"53":1,"75":1}}],["проект",{"0":{"52":1},"2":{"30":1,"34":2,"39":2,"46":1,"50":1}}],["проектирования",{"2":{"6":2,"27":1,"30":1}}],["проектах",{"2":{"26":1,"34":1,"44":1}}],["проекта",{"2":{"3":1,"9":1,"10":1,"11":1,"30":1,"32":1,"34":2,"35":1,"44":1,"46":1,"52":1,"54":1,"75":1}}],["прокси",{"2":{"4":1,"5":1,"45":1}}],["пробелы",{"2":{"22":1}}],["пробелами",{"2":{"4":1}}],["проблему",{"2":{"34":1,"36":1}}],["проблема",{"2":{"11":1}}],["проблемы",{"2":{"4":2,"6":1,"20":1,"43":1,"54":1,"55":1}}],["проблем",{"2":{"3":1,"7":1}}],["протяжении",{"2":{"9":1}}],["протоколу",{"2":{"35":1,"36":1}}],["протокола",{"2":{"30":1}}],["протоколам",{"2":{"6":1}}],["протоколы",{"0":{"5":1},"2":{"5":1,"54":1}}],["протоколом",{"2":{"4":1}}],["протестировать",{"2":{"3":1}}],["проводить",{"2":{"45":1}}],["провести",{"2":{"7":1}}],["проверено",{"2":{"55":1}}],["проверенная",{"2":{"76":1}}],["проверенных",{"2":{"75":1}}],["проверенные",{"2":{"30":1}}],["проверенное",{"2":{"7":1}}],["проверьте",{"2":{"55":1}}],["проверить",{"2":{"54":1}}],["проверив",{"2":{"2":1}}],["проверка",{"2":{"43":3}}],["проверки",{"0":{"28":1}}],["проверять",{"2":{"2":1,"44":1}}],["проверяет",{"2":{"2":2,"34":1,"40":1}}],["провайдеры",{"2":{"35":2}}],["провайдерами",{"2":{"54":1}}],["провайдера",{"2":{"3":1,"46":1}}],["провайдер",{"2":{"3":1}}],["провайдеров",{"2":{"3":1}}],["проще",{"2":{"3":1,"42":1,"53":1,"55":1}}],["прослойка",{"2":{"55":1}}],["просмотреть",{"2":{"28":1}}],["просмотра",{"2":{"11":1}}],["просишь",{"2":{"2":1}}],["пространство",{"2":{"39":1}}],["простую",{"2":{"7":1}}],["просты",{"2":{"55":1}}],["простые",{"2":{"42":1}}],["простых",{"2":{"6":2,"55":1}}],["простым",{"2":{"1":1}}],["простому",{"2":{"32":1}}],["простом",{"2":{"20":1,"45":1}}],["простое",{"2":{"9":1,"55":1}}],["простого",{"2":{"6":1}}],["просто",{"2":{"2":1,"11":1,"19":1,"35":1,"42":1,"43":2,"46":1,"53":1,"54":1}}],["простой",{"2":{"2":1,"8":1,"54":1}}],["приблизить",{"2":{"55":1}}],["придумали",{"2":{"55":1}}],["придерживаются",{"2":{"53":1}}],["придерживаться",{"2":{"7":1,"54":1}}],["придется",{"2":{"7":1}}],["пригодится",{"2":{"54":1}}],["пригодиться",{"2":{"40":1}}],["причем",{"2":{"54":2}}],["причины",{"2":{"53":1}}],["причудливо",{"2":{"7":1}}],["приятней",{"2":{"53":1}}],["приятно",{"2":{"11":1}}],["привязывайтесь",{"2":{"50":1}}],["привязана",{"2":{"43":1}}],["приветствуется",{"2":{"74":1}}],["привести",{"2":{"11":1}}],["привел",{"2":{"20":1}}],["привели",{"2":{"11":2}}],["привело",{"2":{"6":1}}],["приведенные",{"2":{"21":1}}],["приведен",{"2":{"4":1}}],["признательность",{"2":{"30":1}}],["природе",{"2":{"21":1}}],["присутствует",{"2":{"43":1}}],["присваивает",{"2":{"18":1}}],["присваивается",{"2":{"7":1,"18":1}}],["присоединении",{"2":{"18":1}}],["примитивах",{"2":{"42":1}}],["примитивов",{"2":{"42":1}}],["примитивные",{"2":{"18":1,"43":1}}],["примите",{"2":{"11":1}}],["примет",{"2":{"7":1}}],["применять",{"2":{"7":1}}],["применяется",{"2":{"2":1,"11":1}}],["применения",{"2":{"34":1}}],["применению",{"2":{"7":1}}],["применение",{"2":{"5":1}}],["примеры",{"2":{"21":1,"54":1}}],["примерами",{"2":{"20":1}}],["примерах",{"2":{"18":1}}],["примера",{"2":{"11":1}}],["примеров",{"2":{"7":1,"9":1,"11":1}}],["примере",{"2":{"7":1,"8":1,"11":1,"20":1}}],["примеру",{"2":{"7":1}}],["пример",{"2":{"1":2,"4":1,"8":1,"11":1,"17":1,"18":1,"19":1,"20":1,"34":2}}],["примерно",{"2":{"1":1,"43":1,"55":1}}],["приходила",{"2":{"55":1}}],["приходится",{"2":{"11":2,"16":1,"40":1}}],["приходя",{"2":{"46":1}}],["приходятся",{"2":{"43":1,"45":1}}],["приходящих",{"2":{"5":1}}],["принести",{"2":{"43":1}}],["принадлежат",{"2":{"43":1}}],["принято",{"2":{"9":1}}],["приняты",{"2":{"6":1}}],["принципе",{"2":{"45":1}}],["принципы",{"2":{"30":1}}],["принципов",{"2":{"27":1}}],["принцип",{"2":{"4":1}}],["принимающий",{"2":{"4":1}}],["приложению",{"2":{"10":1,"43":1,"46":1}}],["приложении",{"0":{"8":1},"1":{"9":1},"2":{"7":1,"8":1,"11":1,"36":2,"43":3,"55":1}}],["приложением",{"2":{"8":1,"55":1,"75":2}}],["приложение",{"2":{"3":2,"6":1,"7":4,"8":3,"9":2,"10":2,"36":1,"46":1,"53":1,"54":1,"55":3}}],["приложений",{"0":{"46":1},"1":{"47":1,"48":1,"49":1,"50":1,"51":1,"52":1},"2":{"2":1,"6":2,"7":5,"9":2,"55":1}}],["приложениями",{"2":{"6":1}}],["приложения",{"0":{"36":1,"39":1},"1":{"37":1,"38":1},"2":{"1":1,"5":1,"6":2,"7":6,"8":5,"9":4,"10":1,"19":1,"20":1,"30":4,"34":1,"36":2,"39":3,"42":1,"44":1,"45":1,"46":4,"47":1,"55":4,"75":1}}],["при",{"2":{"2":3,"3":1,"4":2,"5":1,"6":1,"7":6,"8":1,"9":2,"11":1,"13":2,"16":2,"18":1,"20":3,"26":1,"28":1,"34":4,"36":2,"40":2,"44":2,"45":3,"53":1,"54":1,"55":8,"75":2}}],["геттеров",{"2":{"43":1}}],["генерации",{"2":{"55":1}}],["генерация",{"2":{"39":1,"55":1}}],["генерируется",{"2":{"55":1}}],["генерировать",{"2":{"34":1}}],["генерить",{"2":{"55":1}}],["генерит",{"2":{"2":2}}],["гарагусо",{"2":{"30":1}}],["глоссарий",{"0":{"75":1}}],["глобален",{"2":{"43":1}}],["глобальный",{"2":{"43":1}}],["глобальным",{"2":{"43":2,"46":1}}],["глобальными",{"2":{"43":1}}],["глобальное",{"2":{"43":1}}],["глобальная",{"2":{"8":1}}],["глючит",{"2":{"40":1}}],["глава",{"0":{"31":1},"2":{"30":4}}],["главах",{"2":{"7":1,"30":1}}],["главу",{"2":{"28":1}}],["главным",{"2":{"46":1,"54":1}}],["главных",{"2":{"10":1}}],["главного",{"2":{"9":1}}],["главы",{"2":{"6":1,"28":1}}],["главе",{"2":{"6":1,"9":1,"10":3,"11":2,"18":1,"27":2,"30":8}}],["гибки",{"2":{"45":1}}],["гибкость",{"2":{"5":1,"7":1}}],["гибче",{"2":{"43":1}}],["гипертекста",{"2":{"6":1}}],["гуглить",{"2":{"3":2,"54":1}}],["грамотная",{"2":{"75":1}}],["границах",{"2":{"7":1}}],["гранулировано",{"2":{"2":1}}],["греется",{"2":{"40":1}}],["громоздким",{"2":{"20":1}}],["грузить",{"2":{"3":1,"55":1}}],["грубо",{"2":{"2":1,"4":1,"46":1}}],["где",{"2":{"2":1,"3":1,"7":1,"8":1,"10":1,"11":1,"35":1,"43":1,"44":1,"45":2,"49":1}}],["гостинице",{"2":{"55":1}}],["гостей",{"2":{"2":1}}],["года",{"2":{"54":1,"76":1}}],["годы",{"2":{"42":1}}],["год",{"2":{"35":1}}],["готовым",{"2":{"40":1}}],["готовы",{"2":{"20":1,"27":1,"28":1}}],["готовых",{"2":{"19":1}}],["говорит",{"2":{"46":1}}],["говорилось",{"2":{"26":1}}],["говорил",{"2":{"11":1}}],["говоря",{"2":{"2":1,"4":1,"45":1,"46":1,"55":1}}],["чуть",{"2":{"55":1}}],["чужих",{"2":{"53":1}}],["читаемая",{"2":{"54":1}}],["читаемым",{"2":{"26":1}}],["читать",{"2":{"54":1}}],["чистом",{"2":{"53":1}}],["чистый",{"2":{"50":1}}],["чистая",{"2":{"18":1}}],["число",{"2":{"46":1}}],["числа",{"2":{"8":1,"18":1}}],["чисел",{"2":{"42":1}}],["чате",{"2":{"76":1}}],["чаще",{"2":{"13":1,"19":1}}],["часто",{"2":{"7":2,"11":1,"12":1,"16":2,"20":1,"28":1,"36":1,"42":1,"55":1,"76":2}}],["частью",{"2":{"8":1,"14":1,"43":1}}],["часть",{"2":{"5":2,"7":1,"10":1,"40":1,"42":1}}],["частично",{"2":{"43":3,"45":2}}],["части",{"2":{"2":1,"54":1}}],["чтения",{"2":{"11":2}}],["чтобы",{"2":{"2":1,"8":2,"10":2,"11":4,"14":1,"19":1,"20":1,"26":2,"28":2,"34":1,"35":2,"36":1,"39":2,"43":1,"45":2,"54":2,"55":5}}],["что",{"2":{"2":8,"3":2,"4":1,"5":2,"7":14,"8":3,"9":5,"10":6,"11":12,"14":2,"16":2,"17":1,"18":1,"19":2,"20":1,"28":2,"32":1,"34":3,"36":1,"39":2,"42":1,"43":13,"44":3,"45":3,"46":4,"47":1,"53":3,"54":4,"55":4}}],["членов",{"2":{"11":1}}],["членам",{"2":{"11":1}}],["член",{"2":{"11":1}}],["чего",{"2":{"42":1,"43":1,"45":1}}],["человек",{"2":{"40":1,"54":2}}],["четко",{"2":{"10":1}}],["четкое",{"2":{"6":1}}],["четкость",{"2":{"5":1}}],["четыре",{"2":{"2":1}}],["чем",{"2":{"1":1,"7":1,"11":1,"19":1,"28":1,"35":1,"39":2,"43":1,"45":1,"50":1,"53":1}}],["через",{"2":{"1":1,"2":5,"3":1,"5":1,"30":1,"34":1,"36":1,"39":1,"40":1,"42":2,"43":1,"53":1}}],["аспекте",{"2":{"44":1,"45":1}}],["асинхронные",{"2":{"20":1}}],["алиаса",{"2":{"39":1}}],["алиасы",{"2":{"39":1}}],["алиас",{"2":{"39":2}}],["альтернативный",{"2":{"11":1}}],["альтернатива",{"2":{"3":1}}],["аудио",{"2":{"36":1}}],["аутентификацию",{"2":{"3":1}}],["аутентификацией",{"2":{"2":1}}],["аутентификации",{"2":{"2":1,"43":1,"75":2}}],["аутентификация",{"0":{"2":1},"2":{"2":5}}],["апгрейд",{"2":{"55":1}}],["апдейта",{"2":{"34":1}}],["апплеты",{"2":{"6":1}}],["аргумента",{"2":{"8":1}}],["архитектура",{"0":{"46":1},"1":{"47":1,"48":1,"49":1,"50":1,"51":1,"52":1},"2":{"46":4,"75":1}}],["архитектуры",{"2":{"30":1}}],["архитектурно",{"2":{"43":1}}],["архитектурной",{"2":{"42":1}}],["архитектурными",{"2":{"7":1}}],["архитектурная",{"2":{"7":1}}],["архитектурой",{"2":{"7":1}}],["азы",{"2":{"7":1}}],["автоматизацией",{"2":{"54":1}}],["автоматизации",{"2":{"30":1,"32":1,"34":2}}],["автоматического",{"2":{"7":1,"34":1}}],["автоматически",{"2":{"6":1,"7":1,"11":1,"34":1,"45":1}}],["автор",{"2":{"30":1}}],["авторизационный",{"2":{"2":1}}],["авторизация",{"0":{"2":1},"2":{"2":4}}],["автономного",{"2":{"8":1}}],["аналогу",{"2":{"55":1}}],["аналогов",{"2":{"45":1}}],["аналогом",{"2":{"43":1}}],["аналогичный",{"2":{"54":1}}],["аналогичные",{"2":{"43":1}}],["аналогией",{"2":{"46":1}}],["аналоги",{"2":{"43":1}}],["аналог",{"2":{"43":1}}],["анимации",{"2":{"20":3}}],["анимацию",{"2":{"6":1,"55":1}}],["английского",{"2":{"54":1}}],["английском",{"2":{"54":2}}],["англ",{"2":{"4":1}}],["актуальность",{"2":{"76":1}}],["актуален",{"2":{"11":1}}],["активно",{"2":{"45":1}}],["аккуратней",{"2":{"44":1}}],["аккаунта",{"2":{"46":1}}],["аккаунт",{"2":{"2":1}}],["аккаунтом",{"2":{"2":1}}],["академических",{"2":{"6":1}}],["абы",{"2":{"5":1}}],["абсолютно",{"2":{"54":1}}],["абсолютном",{"2":{"3":1}}],["абстрактны",{"2":{"27":1}}],["абстрактное",{"2":{"26":1}}],["абстракция",{"0":{"0":1},"1":{"1":1}}],["абстрагирование",{"2":{"1":1}}],["адаптивноcти",{"2":{"50":1}}],["адаптивность",{"2":{"46":1,"53":1}}],["адрес",{"2":{"13":1}}],["адресу",{"2":{"4":1}}],["админ",{"2":{"2":1}}],["админке",{"2":{"2":1}}],["аттрибутах",{"2":{"53":1}}],["аттрибут",{"2":{"8":1}}],["атрибута",{"2":{"13":1,"14":1,"17":1}}],["атрибуту",{"2":{"11":1}}],["атрибуты",{"2":{"11":1,"12":1}}],["атрибут",{"2":{"7":2,"10":3,"11":1,"13":1,"17":2}}],["ат",{"2":{"2":2}}],["а",{"2":{"2":2,"3":1,"4":2,"7":4,"8":1,"9":1,"10":1,"11":4,"19":1,"20":1,"22":1,"42":2,"43":5,"45":1,"46":1,"48":1,"54":4,"55":5}}],["мнение",{"2":{"76":1}}],["множественного",{"2":{"42":1}}],["множество",{"2":{"40":2,"45":1,"55":1}}],["многие",{"2":{"35":1,"40":1,"46":1,"54":1}}],["многих",{"2":{"26":1}}],["многолетним",{"2":{"55":1}}],["многопоточной",{"2":{"45":1}}],["многопоточность",{"2":{"30":1}}],["многословность",{"2":{"11":1}}],["многословной",{"2":{"11":1}}],["многословен",{"2":{"11":1}}],["многом",{"2":{"8":1}}],["многое",{"2":{"7":1}}],["многократно",{"2":{"7":1,"9":1}}],["много",{"2":{"2":1,"3":1,"4":1,"36":1,"40":1,"41":1,"42":1,"45":1}}],["мучается",{"2":{"50":1}}],["мусор",{"2":{"20":1}}],["миру",{"2":{"55":1}}],["мир",{"2":{"53":1}}],["мире",{"2":{"9":1}}],["мидл",{"2":{"46":1}}],["микрософт",{"2":{"55":1}}],["микросервисов",{"2":{"46":1}}],["микросервиса",{"2":{"45":1}}],["микро",{"2":{"40":1}}],["миксинов",{"2":{"11":1}}],["миксины",{"2":{"11":2,"42":4}}],["миграция",{"2":{"11":1}}],["миграции",{"2":{"11":1}}],["минут",{"2":{"54":1}}],["минусы",{"2":{"53":2}}],["минуя",{"2":{"7":1}}],["минисервере",{"2":{"40":1}}],["мини",{"2":{"40":2}}],["минимум",{"2":{"40":1,"43":1,"52":1,"54":2}}],["миниатюре",{"2":{"3":1}}],["мыслить",{"2":{"46":1}}],["мышку",{"2":{"40":1}}],["мыши",{"2":{"19":1}}],["мышления",{"2":{"7":1}}],["мы",{"2":{"6":3,"7":2,"8":11,"9":4,"10":13,"11":14,"12":1,"13":1,"18":3,"19":8,"20":3,"21":1,"26":1,"27":3,"30":5,"34":2,"46":5}}],["мае",{"2":{"54":1}}],["максимально",{"2":{"53":1,"55":1}}],["манифест",{"2":{"55":3}}],["манипулирования",{"2":{"6":1,"16":1}}],["манипуляции",{"2":{"2":1}}],["манере",{"2":{"26":1}}],["магические",{"2":{"42":1}}],["магия",{"2":{"18":1}}],["магию",{"2":{"10":1}}],["магазине",{"2":{"55":1}}],["магазина",{"2":{"46":1}}],["магазин",{"2":{"2":1}}],["маске",{"2":{"37":1}}],["маска",{"2":{"4":2}}],["массива",{"2":{"42":3,"45":1,"54":1}}],["массив",{"2":{"42":3,"45":1}}],["массивы",{"2":{"18":1}}],["массиве",{"2":{"17":1}}],["масштабируемых",{"2":{"45":1}}],["масштабирования",{"2":{"7":1}}],["масштабах",{"2":{"16":1}}],["маленького",{"2":{"36":1}}],["маленьких",{"2":{"9":1}}],["маленький",{"2":{"2":1}}],["малого",{"2":{"7":2}}],["машины",{"2":{"40":1}}],["машин",{"2":{"6":1}}],["метрике",{"2":{"55":1}}],["метрики",{"2":{"55":1}}],["метода",{"2":{"55":1}}],["методами",{"2":{"54":1}}],["методам",{"2":{"11":1}}],["методом",{"2":{"55":1}}],["методов",{"2":{"42":1}}],["методе",{"2":{"11":1}}],["методы",{"0":{"25":1},"2":{"4":1,"6":1,"8":1,"9":1,"43":1}}],["метод",{"2":{"2":1,"8":3,"11":1}}],["медленней",{"2":{"43":1}}],["мелких",{"2":{"43":1}}],["механизмы",{"2":{"43":1}}],["мест",{"2":{"55":1}}],["места",{"2":{"42":1}}],["месте",{"2":{"10":1,"45":1}}],["место",{"2":{"6":1,"20":1,"45":1}}],["мере",{"2":{"6":2,"9":1,"11":2,"19":1,"27":1}}],["меры",{"2":{"2":1}}],["между",{"2":{"4":1,"6":3,"7":3,"10":1,"11":2,"28":1,"40":1,"43":2,"54":1,"55":1}}],["менее",{"2":{"55":1}}],["менеджера",{"2":{"34":1}}],["менеджер",{"2":{"2":3}}],["ментор",{"2":{"54":2}}],["меню",{"2":{"46":1}}],["меньше",{"2":{"45":1}}],["меньший",{"2":{"11":1,"45":1}}],["меняем",{"2":{"46":1}}],["меняете",{"2":{"43":1}}],["меняет",{"2":{"11":1}}],["меняется",{"2":{"1":1}}],["меняться",{"2":{"42":1}}],["менять",{"2":{"36":1}}],["меняющими",{"2":{"16":1}}],["меняются",{"2":{"17":1,"42":1}}],["меняют",{"2":{"7":1}}],["мобильное",{"2":{"55":1}}],["морган",{"2":{"54":1}}],["мощь",{"2":{"46":1}}],["мощная",{"2":{"7":1}}],["мощных",{"2":{"6":1}}],["мощности",{"2":{"6":1}}],["монитора",{"2":{"40":1}}],["монитор",{"2":{"40":1}}],["мониторингом",{"2":{"2":1}}],["моем",{"2":{"39":1}}],["моменты",{"2":{"54":1,"76":1}}],["моментов",{"2":{"44":1}}],["момент",{"2":{"20":1,"42":1,"55":1}}],["могущие",{"2":{"76":1}}],["могут",{"2":{"4":2,"6":1,"7":2,"11":1,"16":1,"20":1,"36":1,"40":1,"45":2,"46":1,"47":1,"54":1}}],["мог",{"2":{"10":1,"55":1}}],["модули",{"2":{"43":2,"46":2,"49":1}}],["модуля",{"2":{"43":1}}],["модуле",{"2":{"43":1,"45":1,"46":1}}],["модульная",{"2":{"46":1}}],["модульными",{"2":{"7":1}}],["модуль",{"2":{"1":2,"10":1,"46":7}}],["модификации",{"2":{"14":1}}],["модификатор",{"2":{"10":1}}],["моделям",{"2":{"50":1}}],["моделей",{"2":{"26":1}}],["модели",{"2":{"7":1}}],["модель",{"2":{"7":2,"43":2,"45":1,"53":1}}],["мои",{"2":{"5":1}}],["можем",{"2":{"8":1,"10":5,"11":3,"12":1,"18":1,"19":2,"20":1}}],["можете",{"2":{"7":5,"9":1,"11":2,"21":1,"26":2,"28":2,"36":1,"74":1}}],["может",{"2":{"2":1,"3":2,"4":1,"5":1,"6":1,"7":4,"9":1,"10":3,"11":3,"14":1,"20":2,"34":1,"36":1,"39":1,"40":1,"42":1,"43":6,"44":1,"45":3,"47":1,"53":3,"54":1,"55":6}}],["можно",{"2":{"1":1,"2":4,"3":2,"5":1,"7":2,"8":1,"9":3,"19":1,"20":3,"26":1,"35":3,"36":1,"40":2,"42":1,"43":3,"45":3,"46":2,"53":1,"54":4,"55":3}}],["н",{"2":{"54":1}}],["нём",{"2":{"50":1}}],["нужен",{"2":{"34":1,"39":1,"43":2,"54":2,"55":1}}],["нужный",{"2":{"44":1}}],["нужны",{"2":{"42":1,"46":1,"55":1}}],["нужных",{"2":{"42":1}}],["нужные",{"2":{"3":1}}],["нужна",{"2":{"5":1,"7":1,"38":1,"42":1,"47":1}}],["нужное",{"2":{"34":1}}],["нужно",{"2":{"2":2,"7":1,"8":1,"9":1,"11":2,"16":1,"20":1,"34":1,"36":2,"39":2,"42":1,"43":2,"44":2,"46":1,"53":1,"54":1,"55":2}}],["нуля",{"2":{"7":1}}],["нюансов",{"2":{"4":1}}],["ним",{"2":{"50":1,"54":1,"55":1}}],["ними",{"2":{"2":1,"7":2,"10":1}}],["нижнем",{"2":{"22":1}}],["ниже",{"2":{"4":1,"74":1}}],["ни",{"2":{"11":1}}],["ничего",{"2":{"9":1,"11":1,"54":1}}],["них",{"2":{"6":1,"7":1,"11":2,"12":1,"20":1,"39":1,"42":1,"44":1,"46":1,"48":1}}],["никакой",{"2":{"43":1,"55":1}}],["никаких",{"2":{"5":1}}],["никогда",{"2":{"5":1,"54":1}}],["нормально",{"2":{"55":1}}],["номер",{"2":{"55":1}}],["ноут",{"2":{"40":1}}],["нотацию",{"2":{"12":1}}],["новая",{"2":{"55":1}}],["новую",{"2":{"47":1}}],["нововведением",{"2":{"43":1}}],["новостей",{"2":{"43":1}}],["новостных",{"2":{"43":1}}],["новой",{"2":{"34":1,"53":1}}],["нового",{"2":{"11":1,"45":1,"74":1}}],["новое",{"0":{"60":1,"63":1,"66":1},"2":{"7":1,"34":1}}],["новых",{"2":{"34":1}}],["новым",{"2":{"11":1}}],["новый",{"2":{"10":1,"11":1,"20":2,"39":1,"47":1}}],["новые",{"2":{"6":3,"40":1,"45":1,"54":1}}],["новичка",{"2":{"5":1}}],["но",{"2":{"2":3,"3":3,"5":1,"6":1,"7":6,"8":1,"9":1,"10":3,"11":9,"14":1,"16":1,"18":1,"19":1,"20":2,"21":1,"26":1,"32":1,"34":1,"36":1,"40":1,"42":2,"43":2,"44":1,"45":5,"46":2,"47":2,"54":4,"55":4}}],["неочевидные",{"2":{"76":1}}],["неоптимизированных",{"2":{"55":1}}],["необходимую",{"2":{"55":1}}],["необходимый",{"2":{"54":1}}],["необходимые",{"2":{"40":1}}],["необходимых",{"2":{"30":1}}],["необходим",{"2":{"35":1}}],["необходимости",{"2":{"7":2,"11":1,"34":1,"36":1}}],["необходимо",{"2":{"6":1,"7":3,"11":3,"20":1}}],["некий",{"2":{"55":1}}],["некоего",{"2":{"43":1}}],["некотором",{"2":{"43":1}}],["некоторое",{"2":{"11":2}}],["некоторых",{"2":{"20":1}}],["некоторые",{"2":{"6":1,"7":3,"11":2,"55":1}}],["некоторую",{"2":{"3":1}}],["некой",{"2":{"2":1}}],["неэффективным",{"2":{"55":1}}],["нельзя",{"2":{"45":1}}],["нелогично",{"2":{"43":1}}],["ненужной",{"2":{"43":1}}],["ненужное",{"2":{"5":1}}],["нечто",{"2":{"43":1}}],["независимо",{"2":{"46":1}}],["независимы",{"2":{"43":1}}],["незаслужено",{"2":{"2":1}}],["неудачное",{"2":{"43":1}}],["неудобно",{"2":{"36":1}}],["недорого",{"2":{"35":1}}],["недостатки",{"2":{"11":1}}],["нее",{"2":{"11":1,"43":1,"45":1}}],["неизменяемое",{"2":{"11":1}}],["нереактивные",{"2":{"11":1}}],["неплохо",{"2":{"54":1}}],["неплохой",{"2":{"46":1}}],["неплохим",{"2":{"3":1}}],["непрямой",{"2":{"43":1}}],["непрерывная",{"2":{"32":1}}],["неправильном",{"2":{"16":1}}],["непустое",{"2":{"14":1}}],["непосредственно",{"2":{"9":1,"42":1}}],["небольшую",{"2":{"55":1}}],["небольших",{"2":{"11":1,"53":1}}],["небольшим",{"2":{"7":1}}],["небольшой",{"2":{"41":1,"55":1}}],["небольшое",{"2":{"8":1,"20":1}}],["небольшого",{"2":{"2":1,"3":1,"8":1}}],["несущественные",{"2":{"61":1}}],["несложных",{"2":{"55":1}}],["несложно",{"2":{"2":1}}],["несмотря",{"2":{"54":1}}],["нестандартные",{"2":{"54":1}}],["нескольких",{"2":{"11":1,"39":1,"43":1,"44":1,"45":1}}],["нескольким",{"2":{"4":1}}],["несколько",{"2":{"7":1,"8":1,"9":3,"11":1,"19":2,"20":1,"34":1,"43":2,"46":1,"55":1}}],["несовместимости",{"2":{"6":2}}],["него",{"2":{"4":1,"20":1,"38":1,"40":1,"43":2}}],["ней",{"2":{"3":2,"42":1,"43":1,"47":1,"55":1}}],["немножко",{"2":{"55":1}}],["немного",{"2":{"8":1,"27":1,"45":1,"47":1,"53":1}}],["нем",{"2":{"2":2,"4":1,"6":1,"7":1,"34":2,"35":1,"54":1}}],["нему",{"2":{"2":1,"4":1,"40":1,"43":1}}],["нетривиальная",{"2":{"40":1}}],["нет",{"2":{"2":2,"11":2,"14":1,"28":1,"54":2}}],["неё",{"2":{"2":1}}],["не",{"0":{"5":1,"31":1},"2":{"1":1,"2":4,"3":4,"4":3,"5":2,"6":2,"7":3,"8":1,"9":2,"10":2,"11":9,"13":1,"14":1,"16":1,"17":1,"19":2,"20":4,"21":1,"26":2,"32":1,"34":1,"36":1,"38":1,"40":7,"42":6,"43":9,"44":1,"45":6,"46":3,"47":5,"48":1,"50":2,"53":1,"54":5,"55":10,"76":1}}],["налету",{"2":{"55":1}}],["наличия",{"2":{"45":1}}],["наличие",{"2":{"44":1}}],["нагружает",{"2":{"55":1}}],["натянуть",{"2":{"46":1}}],["нативных",{"2":{"55":1}}],["нативным",{"2":{"55":1}}],["нативными",{"2":{"6":1}}],["нативного",{"2":{"45":1,"55":1}}],["наименьшими",{"2":{"46":1}}],["наиболее",{"2":{"6":1,"11":1,"12":1,"28":1,"39":1,"46":1,"76":1}}],["наверное",{"2":{"45":1,"55":1}}],["навигацией",{"2":{"30":1}}],["наряду",{"2":{"44":1}}],["наращивать",{"2":{"6":1}}],["находятся",{"2":{"54":1}}],["находят",{"2":{"43":1}}],["находится",{"2":{"20":1,"43":1}}],["набирают",{"2":{"26":1}}],["набираются",{"2":{"23":1}}],["наборы",{"2":{"7":1,"9":1}}],["набор",{"2":{"6":1,"21":1,"35":1}}],["нажмет",{"2":{"20":1}}],["найти",{"2":{"19":1,"20":1}}],["наоборот",{"2":{"11":1}}],["надёжней",{"2":{"40":1}}],["надо",{"2":{"34":1,"35":1,"43":2,"45":3,"46":3,"54":2}}],["надежных",{"2":{"45":1}}],["надежный",{"2":{"2":1}}],["надежное",{"2":{"34":1}}],["над",{"0":{"48":1},"2":{"11":2,"45":1,"55":1,"75":1}}],["называть",{"2":{"43":2}}],["называет",{"2":{"46":1}}],["называется",{"2":{"8":1,"18":1,"42":1,"43":1}}],["называемые",{"2":{"12":1,"43":1}}],["называемый",{"2":{"11":1}}],["называемой",{"2":{"10":1}}],["названный",{"2":{"11":1}}],["названиемстор",{"2":{"43":1}}],["название",{"2":{"11":1,"54":1}}],["наших",{"2":{"9":1}}],["наши",{"2":{"9":2,"10":1,"11":2}}],["нашим",{"2":{"8":1}}],["наш",{"2":{"9":1,"10":1,"11":2,"34":1}}],["нашем",{"2":{"11":2,"19":1}}],["наше",{"2":{"8":3}}],["нашего",{"2":{"8":1,"9":2,"10":5,"11":1,"30":3}}],["намного",{"2":{"40":1,"43":1,"45":2,"48":1,"53":2,"54":1,"55":3}}],["нам",{"2":{"6":1,"7":1,"8":1,"9":2,"11":3,"19":1,"20":2,"30":1}}],["наконец",{"2":{"6":2,"8":1}}],["научных",{"2":{"6":1}}],["начнем",{"2":{"21":1}}],["начнется",{"2":{"9":1}}],["начинаниях",{"2":{"30":1}}],["начинается",{"2":{"24":1}}],["начинающему",{"2":{"54":1}}],["начинающих",{"2":{"40":1,"76":1}}],["начинающуюся",{"2":{"12":1}}],["начинаются",{"2":{"23":2}}],["начиная",{"2":{"10":1,"30":1}}],["начинаться",{"2":{"23":1}}],["начинать",{"2":{"5":1,"7":1}}],["начальный",{"2":{"66":1}}],["начального",{"2":{"54":1}}],["начальное",{"2":{"16":1}}],["началом",{"2":{"54":1}}],["начала",{"2":{"21":1,"55":1}}],["начале",{"2":{"8":1}}],["начать",{"2":{"3":1,"7":1,"30":1}}],["напишем",{"2":{"19":1}}],["написанным",{"2":{"44":1}}],["написанный",{"2":{"3":1,"7":1}}],["написание",{"2":{"44":1}}],["написании",{"2":{"26":1,"54":1,"55":1}}],["написания",{"2":{"3":1,"6":1,"10":3,"20":1,"30":1}}],["написаны",{"2":{"9":1}}],["написано",{"2":{"7":1}}],["написать",{"2":{"3":2,"54":1,"55":1}}],["напрямую",{"2":{"8":1,"11":1,"39":1,"42":1,"47":1,"48":1,"55":1}}],["направляется",{"2":{"2":1}}],["направляет",{"2":{"2":1}}],["например",{"2":{"2":5,"3":6,"4":1,"7":3,"11":4,"13":1,"14":1,"17":1,"19":1,"20":1,"22":1,"23":4,"24":1,"25":1,"26":1,"32":2,"36":1,"40":2,"43":5,"45":4,"46":2,"47":1,"48":1,"51":1,"55":2}}],["наследованием",{"2":{"46":2}}],["наследования",{"2":{"42":1}}],["насколько",{"2":{"7":1}}],["настройте",{"2":{"54":1}}],["настройку",{"2":{"40":1}}],["настройка",{"0":{"40":1},"2":{"39":2,"40":1}}],["настройки",{"2":{"39":1}}],["настроек",{"2":{"40":2}}],["настроен",{"2":{"34":1}}],["настроить",{"2":{"39":2,"40":1}}],["настраиваемой",{"2":{"10":1}}],["настраивается",{"2":{"4":1}}],["настолько",{"2":{"7":1,"55":1}}],["настольными",{"2":{"6":1}}],["нас",{"2":{"2":1,"10":1,"11":2,"26":1,"34":1,"46":1}}],["на",{"2":{"1":4,"2":14,"3":8,"4":5,"5":11,"6":3,"7":10,"8":8,"9":2,"10":3,"11":8,"12":1,"16":1,"17":4,"19":3,"20":6,"23":3,"26":1,"28":1,"32":2,"34":12,"35":4,"36":2,"39":3,"40":5,"42":6,"43":9,"44":8,"45":11,"46":9,"47":1,"48":2,"50":3,"53":5,"54":19,"55":16,"60":1,"61":1,"75":1}}],["rip",{"2":{"43":1}}],["rspack",{"2":{"40":24}}],["rc",{"2":{"40":2}}],["rush",{"2":{"40":2}}],["rust",{"2":{"40":2}}],["rustfmt",{"2":{"40":4}}],["ruby",{"2":{"40":2}}],["ru",{"2":{"40":6,"54":1,"76":2}}],["rules",{"2":{"40":4}}],["run",{"2":{"34":18}}],["runs",{"2":{"34":4}}],["raw",{"2":{"36":4,"38":2,"39":2}}],["routes",{"2":{"46":1}}],["rollup",{"2":{"39":2,"40":4}}],["role",{"2":{"2":1}}],["root",{"2":{"34":2,"38":2}}],["r",{"2":{"34":4,"76":2}}],["rf",{"2":{"34":8}}],["rm",{"2":{"34":6}}],["rbac",{"2":{"2":1}}],["rtl",{"2":{"42":1}}],["rt",{"2":{"2":4,"75":1}}],["rpc",{"2":{"1":1,"5":8,"54":1}}],["reddit",{"2":{"76":1}}],["redis",{"2":{"43":1}}],["rehydration",{"2":{"55":1}}],["register",{"2":{"43":1}}],["remix",{"2":{"40":4}}],["removed",{"2":{"34":2}}],["removed=`ls",{"2":{"34":2}}],["remove",{"2":{"34":4}}],["remote",{"2":{"34":14,"40":9}}],["read",{"2":{"43":1}}],["readme",{"2":{"40":4}}],["reactivity",{"2":{"43":1,"45":2}}],["reactive",{"2":{"42":7,"43":6,"45":2}}],["react",{"2":{"7":1,"45":7,"54":2}}],["renovate",{"2":{"40":4}}],["rendering",{"2":{"55":1}}],["renderwhitespace",{"2":{"40":2}}],["render",{"2":{"35":1}}],["release",{"2":{"40":8}}],["releaserc",{"2":{"40":4}}],["reload",{"2":{"34":2}}],["repo",{"2":{"40":2}}],["representation",{"2":{"36":2}}],["recentchange",{"2":{"40":2}}],["recursive",{"2":{"34":2}}],["required",{"2":{"34":2}}],["request",{"2":{"1":2}}],["ref",{"2":{"11":11,"20":4,"42":8,"43":6,"45":2}}],["refresh",{"2":{"2":1,"75":1}}],["resx",{"2":{"40":4}}],["resolver",{"2":{"39":1,"40":2}}],["resolve",{"2":{"39":4}}],["resource",{"2":{"4":1,"36":4}}],["response",{"2":{"34":4}}],["rest",{"0":{"5":2},"2":{"1":1,"5":2}}],["return",{"2":{"1":2,"8":2,"11":4,"37":4,"38":4}}],["люксовый",{"2":{"55":1}}],["любая",{"2":{"43":1,"53":1}}],["любым",{"2":{"34":1}}],["любого",{"2":{"4":1,"74":1}}],["любой",{"2":{"4":1,"7":1,"9":1,"36":1,"43":1,"53":1}}],["любое",{"2":{"2":1}}],["любом",{"2":{"2":1,"43":1,"50":1,"55":1}}],["любимую",{"2":{"1":1}}],["лэйаут",{"2":{"53":1}}],["лучшее",{"2":{"40":1}}],["лучше",{"2":{"11":1,"20":1,"38":1,"40":1,"45":1,"50":1,"54":2,"55":1}}],["лучшего",{"2":{"8":1}}],["лучшими",{"2":{"54":1}}],["лучших",{"2":{"54":1,"75":1}}],["лучший",{"0":{"9":1}}],["лучшие",{"2":{"2":1,"6":1,"54":1}}],["ландшафте",{"2":{"6":1}}],["лазить",{"2":{"2":1}}],["локали",{"2":{"42":1}}],["локализации",{"2":{"42":3}}],["локалей",{"2":{"42":1}}],["локальным",{"2":{"46":1}}],["локальный",{"2":{"43":1}}],["локальных",{"2":{"40":1,"43":1}}],["локально",{"2":{"6":1,"55":1}}],["логическому",{"2":{"55":1}}],["логически",{"2":{"49":1}}],["логические",{"2":{"46":1}}],["логично",{"2":{"43":1}}],["логичный",{"2":{"42":1}}],["логики",{"2":{"43":3}}],["логикой",{"2":{"20":1}}],["логика",{"2":{"3":1,"43":4,"45":1}}],["логику",{"2":{"3":2,"11":1,"43":2,"45":3,"53":2}}],["логине",{"2":{"2":1}}],["логина",{"2":{"2":1,"44":1}}],["логинится",{"2":{"2":1}}],["логин",{"2":{"2":4}}],["лепту",{"0":{"74":1}}],["лень",{"2":{"55":1}}],["лечь",{"2":{"55":1}}],["легче",{"2":{"54":1}}],["легкий",{"2":{"54":1}}],["легкая",{"2":{"7":1}}],["легкой",{"2":{"11":1,"45":1}}],["легко",{"2":{"1":1,"7":1,"54":1}}],["лежащего",{"2":{"32":1}}],["лежит",{"2":{"3":1}}],["лексику",{"2":{"30":1}}],["личного",{"2":{"46":1}}],["личный",{"2":{"2":1}}],["линтингом",{"2":{"44":1}}],["линтер",{"2":{"40":1}}],["линкер",{"2":{"26":1}}],["либо",{"2":{"3":1,"36":3,"39":1,"47":1,"53":2,"54":1,"55":1}}],["лишь",{"2":{"2":1,"6":1,"9":1}}],["лишние",{"2":{"2":1}}],["ли",{"2":{"2":3,"3":1,"43":1,"44":1,"54":4,"55":1}}],["python",{"2":{"54":1,"55":1}}],["pyproject",{"2":{"40":4}}],["pyrightconfig",{"2":{"40":4}}],["pinia",{"2":{"43":12,"61":1}}],["pipelines",{"2":{"40":4}}],["picture",{"2":{"13":4}}],["psalm",{"2":{"40":2}}],["pm2",{"2":{"40":8}}],["pm",{"2":{"40":2}}],["playground",{"2":{"40":1}}],["playwright",{"2":{"40":20}}],["placeholder",{"2":{"3":1}}],["please",{"2":{"40":2}}],["plugin",{"2":{"39":2,"40":1,"55":2}}],["plugins",{"2":{"39":2}}],["px`",{"2":{"37":8}}],["pnp",{"2":{"40":4}}],["pnpm",{"2":{"34":22,"39":2,"40":12}}],["png`",{"2":{"36":2}}],["png",{"2":{"36":5,"38":4}}],["pdm",{"2":{"40":4}}],["pdf",{"2":{"36":1,"40":2}}],["pdgaraguso",{"2":{"30":1}}],["p",{"2":{"34":2}}],["pwd",{"2":{"34":2}}],["pwa",{"0":{"55":1},"2":{"6":1,"55":12,"75":1}}],["persistentsessionreviveprocess",{"2":{"40":2}}],["person",{"2":{"22":1,"24":1}}],["pereditorgroup",{"2":{"40":2}}],["permissions",{"2":{"34":2}}],["permission",{"2":{"2":1}}],["pr",{"2":{"74":1}}],["prerenderer",{"2":{"55":1}}],["preferredtagnamecase",{"2":{"40":2}}],["preview",{"2":{"40":2}}],["prettier",{"2":{"40":27}}],["price",{"2":{"55":1}}],["primevue",{"2":{"41":1}}],["private",{"2":{"34":10}}],["printwidth",{"2":{"40":2}}],["printf",{"2":{"34":2}}],["print",{"2":{"19":4}}],["printpage",{"2":{"19":5}}],["practices",{"0":{"30":1},"2":{"54":1}}],["problem",{"2":{"55":1}}],["progressive",{"2":{"55":1}}],["provide",{"2":{"43":2}}],["procfile",{"2":{"40":4}}],["processqueue",{"2":{"25":1}}],["proj",{"2":{"40":4}}],["project",{"2":{"34":10,"40":2}}],["projectservice",{"2":{"26":1}}],["projectservice=new",{"2":{"26":1}}],["production",{"2":{"39":1}}],["products",{"2":{"1":6}}],["prod",{"2":{"34":7}}],["profile",{"2":{"13":4}}],["props",{"2":{"11":1,"37":22}}],["proxy",{"2":{"4":1,"42":2,"45":1}}],["pullapprove",{"2":{"40":4}}],["puppeteer",{"2":{"40":20}}],["pubspec",{"2":{"40":6}}],["pubxml",{"2":{"40":4}}],["public",{"2":{"3":1,"36":4}}],["pugtools",{"2":{"40":2}}],["push",{"2":{"32":1,"34":5,"45":2}}],["purple",{"2":{"10":2}}],["pure",{"2":{"10":2}}],["pascal",{"2":{"40":2}}],["pascalcase",{"2":{"24":1}}],["packages",{"2":{"40":2}}],["package",{"2":{"39":2,"40":13}}],["paths",{"2":{"39":2}}],["path",{"2":{"37":2,"39":6}}],["patterns",{"0":{"30":1},"2":{"40":2,"54":1}}],["pablo",{"2":{"30":1}}],["pagespeed",{"2":{"55":2}}],["pages",{"2":{"32":1,"34":13,"35":3,"54":1}}],["page",{"2":{"4":1,"55":1}}],["params",{"2":{"1":4}}],["postcss",{"2":{"40":20}}],["postcssrc",{"2":{"40":20}}],["postman",{"2":{"4":1,"40":1}}],["postgresql",{"2":{"3":1}}],["policy",{"2":{"2":1}}],["phpcs",{"2":{"40":4}}],["phpunit",{"2":{"40":2}}],["php",{"2":{"3":1,"40":4,"54":1,"55":2}}],["photo",{"2":{"2":1}}],["pba",{"2":{"2":1}}],["e2e",{"2":{"44":5}}],["eex",{"2":{"40":2}}],["event",{"2":{"40":2}}],["everybody",{"2":{"43":1}}],["every",{"2":{"1":2}}],["emmet",{"2":{"40":4}}],["emits",{"2":{"11":1}}],["eol",{"2":{"40":2}}],["es6",{"2":{"42":1,"45":1}}],["esbenp",{"2":{"40":8}}],["esbuild",{"2":{"39":1}}],["eslint",{"2":{"39":3,"40":29,"54":1}}],["esnext",{"2":{"39":2}}],["end",{"2":{"44":2}}],["entity",{"2":{"43":2}}],["entire",{"2":{"38":2}}],["engine",{"2":{"42":1}}],["en",{"2":{"40":6}}],["enablesmartcommit",{"2":{"40":2}}],["enable",{"2":{"40":6}}],["enabled",{"2":{"40":18}}],["envrc",{"2":{"40":24}}],["envs",{"2":{"34":4}}],["environments",{"2":{"35":1}}],["environment",{"2":{"34":2}}],["env",{"2":{"1":2,"34":48,"40":76}}],["eager",{"2":{"38":4}}],["easingthemes",{"2":{"34":3}}],["e88a22df",{"2":{"36":1}}],["echo",{"2":{"34":16}}],["exs",{"2":{"40":10}}],["extractor",{"2":{"40":22}}],["extension",{"2":{"40":2}}],["extensions",{"2":{"40":6}}],["ex",{"2":{"40":2}}],["experience",{"2":{"75":2}}],["express",{"2":{"55":1}}],["expand",{"2":{"40":2}}],["expandmode",{"2":{"40":2}}],["explorer",{"2":{"40":12}}],["exports",{"2":{"38":2}}],["export",{"2":{"1":4,"11":4,"38":2,"39":2,"43":2}}],["example",{"2":{"38":4}}],["exclude",{"2":{"34":2,"40":2}}],["exiting",{"2":{"34":2}}],["error",{"2":{"34":2}}],["elements",{"2":{"20":1}}],["else",{"0":{"16":2},"2":{"37":2}}],["editorconfig",{"2":{"40":4}}],["editortab",{"2":{"40":2}}],["editorgroup",{"2":{"40":2}}],["editor",{"2":{"40":58}}],["edit",{"2":{"20":3,"74":1}}],["edititem",{"2":{"20":7}}],["edge",{"2":{"3":2}}],["two",{"2":{"55":1}}],["turbo",{"2":{"40":4}}],["txt",{"2":{"40":2}}],["tip",{"2":{"45":1}}],["tidy",{"2":{"40":2}}],["titlebarstyle",{"2":{"40":2}}],["tmp",{"2":{"40":2}}],["t",{"2":{"39":5,"43":2}}],["tazerc",{"2":{"40":4}}],["tabs",{"2":{"40":2}}],["tabsize",{"2":{"40":2}}],["tailwind",{"2":{"40":20,"53":2}}],["tail",{"2":{"34":2}}],["target",{"2":{"34":30,"39":2}}],["tasks",{"2":{"40":4}}],["task",{"2":{"24":1}}],["that",{"2":{"43":4}}],["there",{"2":{"43":1}}],["the",{"2":{"34":4,"36":4,"38":2,"40":2,"55":1}}],["then",{"2":{"34":8}}],["throw",{"2":{"34":2}}],["this",{"2":{"10":2,"11":6,"40":6}}],["travis",{"2":{"40":4}}],["translate",{"2":{"54":1}}],["transform",{"2":{"45":1}}],["transformer",{"2":{"40":2}}],["transfer",{"2":{"34":2}}],["transitiongroup",{"2":{"20":1}}],["transition",{"2":{"20":1}}],["triggerexpansionontab",{"2":{"40":2}}],["tree",{"2":{"38":2,"40":6,"43":2,"47":1}}],["trevis",{"2":{"32":1}}],["true",{"2":{"1":2,"14":2,"34":2,"38":4,"40":122}}],["terserrc",{"2":{"40":20}}],["terminal",{"2":{"40":10}}],["tex",{"2":{"40":2}}],["textlint",{"2":{"40":4}}],["text",{"2":{"18":2}}],["textarea",{"2":{"18":1}}],["test",{"2":{"40":2,"44":1}}],["teleport",{"2":{"20":1}}],["template",{"2":{"10":5,"20":4,"37":4,"53":4}}],["tsup",{"2":{"40":4}}],["tslint",{"2":{"40":4}}],["tsdoc",{"2":{"40":22}}],["tsdk",{"2":{"40":2}}],["tsx",{"2":{"40":6}}],["tsconfig",{"2":{"39":3,"40":22}}],["tsc",{"2":{"39":1}}],["ts",{"2":{"10":1,"40":66}}],["typedoc",{"2":{"40":4}}],["types",{"2":{"39":2,"72":1}}],["typescript",{"0":{"72":1},"2":{"5":1,"10":1,"39":3,"40":10,"43":1,"72":4}}],["type",{"2":{"34":2,"37":14}}],["type=",{"2":{"18":2}}],["typicode",{"2":{"3":1}}],["tool",{"2":{"40":6}}],["toolchain",{"2":{"40":2}}],["toml",{"2":{"40":20}}],["toc",{"2":{"40":2}}],["total",{"2":{"22":1,"23":1}}],["token",{"2":{"1":2,"2":5,"75":2}}],["to",{"0":{"5":1},"2":{"1":2,"34":4,"36":2,"40":4,"43":3,"44":1}}],["v1",{"0":{"57":1,"59":1,"62":1,"65":1},"1":{"58":1,"60":1,"61":1,"63":1,"64":1,"66":1}}],["vetur",{"2":{"40":4}}],["vercel",{"2":{"35":1,"40":4}}],["versionrc",{"2":{"40":4}}],["versions",{"2":{"40":6}}],["version",{"2":{"34":10,"40":6}}],["vbproj",{"2":{"40":2}}],["vb",{"2":{"40":12}}],["volar",{"2":{"40":7}}],["vs",{"2":{"40":7,"45":1}}],["vscode",{"2":{"34":2,"40":17}}],["v4значительно",{"2":{"34":1}}],["v4",{"2":{"34":6}}],["v2",{"2":{"34":5}}],["v3",{"2":{"34":7}}],["views",{"2":{"46":1}}],["view",{"2":{"43":2,"45":1}}],["viewitem",{"2":{"20":6}}],["visible",{"2":{"40":2}}],["visuals",{"2":{"40":2}}],["visualizer",{"2":{"39":7}}],["vitest",{"2":{"40":20,"44":1}}],["vitepnpm",{"2":{"39":1}}],["vitepress",{"2":{"34":2,"52":1,"54":1}}],["vite",{"2":{"1":2,"4":1,"9":1,"10":1,"11":1,"36":1,"37":1,"39":17,"40":5,"55":3,"76":1}}],["v",{"0":{"13":1,"14":1,"15":1,"16":3,"17":1,"18":1,"19":1},"2":{"12":1,"13":1,"14":3,"16":4,"17":2,"18":2,"19":3,"20":3,"37":6}}],["validate",{"2":{"40":2}}],["value",{"2":{"1":4,"11":3,"40":2,"42":2,"45":4}}],["var",{"2":{"34":8}}],["variable",{"2":{"11":1}}],["variablename",{"2":{"11":1}}],["vuetify",{"2":{"53":1}}],["vuex",{"2":{"43":6,"61":1}}],["vuejs",{"2":{"19":1,"20":2,"76":4}}],["vue",{"0":{"6":1,"8":1,"12":1,"30":1,"43":1,"54":1,"68":1},"1":{"7":1,"8":1,"9":2,"10":1,"11":1,"12":1,"13":2,"14":2,"15":2,"16":2,"17":2,"18":2,"19":2,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1},"2":{"6":4,"7":9,"8":12,"9":7,"10":8,"11":18,"12":3,"14":1,"17":1,"18":1,"19":3,"20":9,"21":1,"27":1,"28":2,"30":4,"34":1,"36":1,"37":3,"39":5,"40":21,"42":6,"43":12,"44":1,"45":17,"46":2,"53":4,"54":19,"55":1,"58":1,"68":1,"74":1,"76":1}}],["it",{"2":{"43":2}}],["i18next",{"2":{"42":1}}],["i18n",{"2":{"40":6,"42":3}}],["ignoredlocales",{"2":{"40":2}}],["ignore",{"2":{"40":4}}],["ignoretrimwhitespace",{"2":{"40":2}}],["ignorerecommendations",{"2":{"40":2}}],["ie6",{"2":{"53":1}}],["iex",{"2":{"40":2}}],["ie11",{"2":{"38":1}}],["ie",{"2":{"38":1}}],["iconify",{"2":{"40":4}}],["icon",{"2":{"37":2}}],["icons",{"0":{"38":1},"2":{"37":3,"38":2}}],["i",{"2":{"17":7,"40":2}}],["if=",{"2":{"37":2}}],["if",{"0":{"15":1,"16":2},"2":{"16":1,"20":1,"34":6}}],["imageresources",{"2":{"38":6}}],["imageraw",{"2":{"36":2}}],["imagenameinvariable",{"2":{"36":2}}],["image",{"2":{"36":8}}],["imageurl",{"2":{"36":2}}],["images",{"2":{"34":2,"36":5,"38":4}}],["imgurl",{"2":{"36":4}}],["img",{"2":{"13":2,"36":12,"37":2}}],["import",{"2":{"1":17,"11":4,"20":6,"36":6,"37":5,"38":12,"39":5,"40":4}}],["isn",{"2":{"43":2}}],["isauthenticated",{"2":{"43":1}}],["ist",{"2":{"40":2}}],["issuenumberlabel",{"2":{"40":2}}],["is=",{"2":{"20":2}}],["is",{"2":{"10":2,"20":1,"40":2,"42":4,"43":2}}],["idx",{"2":{"40":2}}],["ide",{"0":{"40":1},"2":{"40":1,"75":1}}],["id",{"2":{"8":1,"17":1,"22":1,"34":4}}],["id=",{"2":{"8":4}}],["ip",{"2":{"2":1}}],["inject",{"2":{"43":2}}],["ind",{"2":{"40":2}}],["indent",{"2":{"40":2}}],["index",{"2":{"9":1,"34":2,"55":2}}],["inplace",{"2":{"40":2}}],["inputs",{"2":{"34":10}}],["input",{"2":{"18":3,"23":1,"40":2,"45":1}}],["insertfinalnewline",{"2":{"40":2}}],["install",{"2":{"34":20}}],["invisiblecharacters",{"2":{"40":2}}],["inlinesuggest",{"2":{"40":2}}],["in",{"2":{"17":2,"19":1,"20":2,"38":4,"40":2,"43":1}}],["info",{"2":{"4":4}}],["intl",{"2":{"41":1}}],["integrated",{"2":{"40":10}}],["integration",{"2":{"32":1}}],["interface",{"2":{"75":1}}],["interfaces",{"2":{"72":1}}],["intersection",{"2":{"42":1}}],["interval",{"2":{"40":2}}],["interceptors",{"2":{"1":2}}],["into",{"2":{"1":2}}],["init",{"2":{"1":2,"34":3}}],["us",{"2":{"40":2}}],["usenewswidget",{"2":{"45":1}}],["usei18n",{"2":{"45":1,"46":1}}],["useshoppingcart",{"2":{"45":1}}],["usescreensize",{"2":{"45":1}}],["uses",{"2":{"34":20}}],["use",{"2":{"23":1,"40":2,"52":1}}],["useauthservice",{"2":{"43":1}}],["useauthstore",{"2":{"43":1}}],["useauth",{"2":{"1":8,"43":1}}],["userloggedin",{"2":{"43":2}}],["username",{"2":{"34":4,"43":1}}],["user",{"2":{"1":4,"34":12,"40":6,"75":2}}],["userid",{"2":{"1":2}}],["users",{"2":{"1":13}}],["userdata",{"2":{"1":2}}],["unit",{"2":{"44":6}}],["unique",{"2":{"43":1}}],["unicodehighlight",{"2":{"40":2}}],["unlighthouse",{"2":{"40":4}}],["unocss",{"2":{"40":20}}],["uno",{"2":{"40":20}}],["untrackedchanges",{"2":{"40":2}}],["unpkg",{"2":{"8":2}}],["up",{"2":{"34":2,"40":2}}],["update",{"2":{"34":2,"40":2}}],["updating",{"2":{"34":2}}],["ubuntu",{"2":{"34":6}}],["ui",{"0":{"48":1,"53":1},"2":{"30":1,"39":2,"41":2,"44":1,"45":3,"46":2,"48":1,"50":1,"53":10,"75":1}}],["ux",{"2":{"30":2,"55":2,"75":1}}],["url",{"2":{"1":2,"36":3,"38":2}}],["utils",{"2":{"1":6,"37":3,"46":1}}],["fcp",{"2":{"55":1}}],["fetish",{"2":{"44":1}}],["fetch",{"2":{"1":1,"34":2}}],["fnc",{"2":{"41":1}}],["fu",{"2":{"40":1}}],["function",{"2":{"38":6}}],["functions",{"2":{"3":2,"43":1}}],["flow",{"2":{"72":1}}],["flowconfig",{"2":{"40":4}}],["flexbox",{"2":{"51":1,"71":2}}],["flake",{"2":{"40":4}}],["flash",{"2":{"6":1}}],["fls",{"2":{"40":2}}],["fdb",{"2":{"40":2}}],["frequently",{"2":{"76":1}}],["freezed",{"2":{"40":2}}],["from",{"2":{"1":18,"11":4,"20":6,"36":6,"37":4,"38":4,"39":4}}],["fontweight",{"2":{"40":2}}],["fontligatures",{"2":{"40":2}}],["fontfamily",{"2":{"40":2}}],["fontaliasing",{"2":{"40":2}}],["folder",{"2":{"34":2}}],["fork",{"2":{"74":1}}],["foreign",{"2":{"43":1}}],["formulate",{"2":{"40":20}}],["formkit",{"2":{"40":20}}],["formatter",{"2":{"40":2}}],["formatting",{"2":{"40":2}}],["formatonsave",{"2":{"40":2}}],["format",{"2":{"34":6,"40":4}}],["for=",{"2":{"17":2}}],["for",{"0":{"17":1},"2":{"17":1,"20":1,"34":2,"38":4,"40":2,"55":1}}],["fallback",{"2":{"38":1}}],["false",{"2":{"1":2,"34":4,"40":54,"43":2}}],["faq",{"0":{"74":1},"2":{"34":1,"76":1}}],["facebook",{"2":{"7":1}}],["fix",{"2":{"40":2}}],["fixall",{"2":{"40":4}}],["find",{"2":{"40":2}}],["fingerprint",{"2":{"2":1}}],["field",{"2":{"38":4}}],["fill",{"2":{"37":2}}],["filenesting",{"2":{"40":6}}],["filename",{"2":{"38":20}}],["filelistlayout",{"2":{"40":2}}],["files",{"2":{"34":2,"40":6}}],["file=",{"2":{"34":2}}],["file",{"2":{"34":4,"40":4}}],["fi",{"2":{"34":4}}],["firestore",{"2":{"54":1}}],["firebase",{"2":{"3":2,"35":2,"40":8}}],["fira",{"2":{"40":2}}],["first",{"2":{"23":1,"40":2}}],["article",{"2":{"51":1}}],["artisan",{"2":{"40":2}}],["azure",{"2":{"40":4}}],["air",{"2":{"40":2}}],["ava",{"2":{"40":20}}],["aux",{"2":{"40":2}}],["autocompleterefs",{"2":{"40":2}}],["autodetection",{"2":{"40":2}}],["autodetectcolorscheme",{"2":{"40":2}}],["autofetch",{"2":{"40":2}}],["autoupdate",{"2":{"40":2}}],["auto",{"2":{"37":2,"40":2}}],["authors",{"2":{"40":6}}],["authorization",{"2":{"2":2}}],["authinterceptor",{"2":{"1":4}}],["auth",{"2":{"1":6}}],["addextraspaceontop",{"2":{"40":2}}],["addresponseinterceptor",{"2":{"1":4}}],["angular",{"2":{"45":2}}],["an",{"2":{"43":2}}],["analysis",{"2":{"40":2,"72":1}}],["annotations",{"2":{"40":2}}],["antony",{"2":{"40":1}}],["antfu",{"2":{"40":5}}],["antialiased",{"2":{"40":2}}],["and",{"0":{"30":1},"2":{"34":8,"43":4,"54":1}}],["always",{"2":{"43":1}}],["alg",{"2":{"40":2}}],["all",{"2":{"40":2}}],["ally",{"2":{"40":6}}],["allowcompoundwords",{"2":{"40":2}}],["allows",{"2":{"40":2}}],["allow",{"2":{"4":7}}],["alias",{"2":{"39":2}}],["amp",{"2":{"34":8,"40":2}}],["amazon",{"2":{"3":2,"35":2}}],["after",{"2":{"34":2}}],["acr",{"2":{"40":2}}],["acn",{"2":{"40":2}}],["active",{"2":{"40":2}}],["activitybar",{"2":{"40":2}}],["actions",{"0":{"34":1},"2":{"32":1,"34":15,"40":1,"54":1,"60":1}}],["action",{"2":{"20":7,"34":14,"40":1}}],["accessibility",{"2":{"53":1}}],["accessibilitysupport",{"2":{"40":2}}],["access",{"2":{"2":5,"4":5,"75":1}}],["account",{"2":{"1":2,"36":2,"38":1}}],["apollo",{"2":{"40":4}}],["apache",{"2":{"35":1}}],["application",{"2":{"55":2}}],["appleboy",{"2":{"34":5}}],["appveyor",{"2":{"40":4}}],["appsettings",{"2":{"40":4}}],["app",{"2":{"8":9,"9":1,"10":2,"37":3,"46":1,"55":1}}],["api",{"0":{"1":1,"11":1},"2":{"1":18,"3":5,"5":2,"11":16,"19":1,"20":2,"35":2,"40":24,"42":4,"43":1,"45":1,"46":2,"54":3,"55":1,"61":1}}],["aws",{"2":{"3":1}}],["await",{"2":{"1":4}}],["a",{"2":{"3":1,"7":2,"38":2,"40":1,"42":4,"43":3,"46":1,"54":1,"55":1}}],["asked",{"2":{"76":1}}],["aside",{"2":{"51":1}}],["astro",{"2":{"40":2}}],["aspx",{"2":{"40":2}}],["ashx",{"2":{"40":2}}],["ascx",{"2":{"40":2}}],["asax",{"2":{"40":2}}],["assets",{"2":{"36":5,"38":4,"46":1}}],["as",{"2":{"3":1,"38":6}}],["async",{"2":{"1":2}}],["at",{"2":{"2":6,"40":2,"75":1}}],["axios",{"2":{"1":1}}],["=+",{"2":{"40":2}}],["==",{"2":{"34":6}}],["=",{"2":{"1":10,"7":2,"8":2,"11":6,"20":4,"34":6,"37":10,"38":12,"42":8,"43":2,"45":2}}],["бд",{"2":{"43":1}}],["брать",{"2":{"45":1}}],["брали",{"2":{"34":1}}],["браузеру",{"2":{"39":1}}],["браузеры",{"2":{"35":1,"55":1}}],["браузером",{"2":{"34":1,"55":1}}],["браузере",{"2":{"8":1,"9":1,"36":1,"55":3}}],["браузерами",{"2":{"6":1}}],["браузера",{"2":{"4":2,"6":1,"9":1,"30":1,"55":1}}],["браузер",{"2":{"2":1,"4":3,"9":4,"10":1,"44":1}}],["буквы",{"2":{"24":1}}],["буквами",{"2":{"23":1,"26":1}}],["булево",{"2":{"14":2}}],["будто",{"2":{"53":1}}],["будущее",{"2":{"20":1}}],["будущем",{"2":{"7":1}}],["будут",{"2":{"8":1,"11":1,"16":1,"20":1,"23":1,"26":1,"34":1}}],["будем",{"2":{"6":1,"7":1,"8":1,"9":2,"10":2,"11":3,"19":1,"21":1,"26":1,"27":1,"34":2}}],["будете",{"2":{"6":1,"39":1,"54":1}}],["будет",{"2":{"1":1,"3":2,"4":1,"5":1,"7":2,"8":3,"9":2,"11":2,"13":2,"14":3,"16":1,"17":1,"18":1,"19":1,"20":1,"34":1,"36":1,"40":1,"43":2,"44":3,"53":1,"54":2}}],["близко",{"2":{"55":1}}],["ближе",{"2":{"11":1}}],["блестящих",{"2":{"30":1}}],["благодаря",{"2":{"55":1}}],["благодарю",{"2":{"30":1}}],["благополучия",{"2":{"30":1}}],["блока",{"2":{"40":1}}],["блоки",{"2":{"9":1}}],["блог",{"2":{"2":1}}],["билдом",{"2":{"44":1}}],["билде",{"2":{"36":1}}],["билда",{"2":{"32":1,"34":2,"35":1,"39":1}}],["библиотекой",{"2":{"28":1,"43":1,"47":1}}],["библиотека",{"2":{"7":4,"42":1,"43":4,"47":1}}],["библиотек",{"0":{"48":1},"2":{"6":1,"7":2,"27":1,"41":1,"50":1,"53":7}}],["библиотеки",{"0":{"53":1},"2":{"6":1,"7":3,"9":1,"10":1,"39":1,"45":1,"48":1,"53":4}}],["библиотеку",{"0":{"41":1},"2":{"1":1,"7":2,"43":1,"46":1,"48":1,"53":1}}],["бизнес",{"2":{"3":1,"43":5,"45":1}}],["баги",{"2":{"46":1}}],["база",{"2":{"40":1,"43":1}}],["базам",{"2":{"40":1}}],["базовую",{"2":{"46":1}}],["базовых",{"2":{"9":1}}],["базовом",{"2":{"7":1,"54":1}}],["базовое",{"2":{"6":1}}],["базе",{"2":{"3":3,"43":1}}],["базу",{"2":{"3":1}}],["базы",{"2":{"3":1}}],["бандле",{"2":{"39":1}}],["бандла",{"2":{"36":1,"47":1}}],["бандл",{"2":{"3":1,"36":1,"42":1,"53":1}}],["бесполезно",{"2":{"54":1}}],["бесплатно",{"2":{"54":1}}],["бесплатной",{"2":{"8":1}}],["бесплатными",{"2":{"35":1}}],["бесплатные",{"2":{"3":3,"35":1,"54":1}}],["бешено",{"2":{"40":1}}],["бегло",{"2":{"9":1}}],["безвозвратно",{"2":{"41":1}}],["безопасного",{"2":{"30":1}}],["безопасность",{"2":{"2":3}}],["безопасности",{"2":{"2":2,"46":1}}],["без",{"2":{"3":2,"7":1,"32":1,"38":1,"40":1,"44":1,"45":2,"53":1,"54":1,"55":1}}],["бывают",{"2":{"44":1}}],["бывает",{"2":{"5":1,"43":1}}],["быстрей",{"2":{"39":1,"40":1,"45":1,"50":1}}],["быстрее",{"2":{"39":1}}],["быстрый",{"2":{"10":1,"40":1}}],["быстрого",{"2":{"44":1}}],["быстро",{"2":{"7":1,"28":1,"46":1,"53":1}}],["была",{"2":{"42":1,"53":1,"55":1}}],["было",{"2":{"20":1,"42":1,"45":3}}],["был",{"2":{"7":1,"26":1,"35":2,"43":2,"55":1}}],["были",{"2":{"6":3}}],["быть",{"2":{"2":1,"7":3,"9":1,"10":1,"11":3,"14":1,"16":1,"19":1,"20":3,"34":4,"36":1,"42":1,"44":1,"46":1,"49":1,"54":1,"55":3,"76":1}}],["бы",{"2":{"2":1,"54":2}}],["бота",{"2":{"55":2}}],["ботов",{"2":{"55":1}}],["боялся",{"2":{"54":1}}],["боковым",{"2":{"46":1}}],["бо́льшая",{"2":{"45":1}}],["бойлерплейта",{"2":{"45":1}}],["бонусная",{"2":{"30":1}}],["бонусами",{"2":{"2":1}}],["большую",{"2":{"45":1}}],["большой",{"2":{"11":1}}],["большого",{"2":{"7":1}}],["больше",{"2":{"8":1,"16":1,"20":1,"21":1,"30":1,"40":2,"45":2,"54":1,"55":2}}],["большей",{"2":{"7":1,"11":1}}],["большая",{"2":{"7":1,"54":1}}],["больших",{"2":{"11":1,"16":2,"34":1,"44":1,"45":3}}],["большим",{"2":{"10":1,"42":1,"44":2}}],["большими",{"2":{"3":1,"45":1}}],["большинстве",{"2":{"7":1,"42":1,"55":1}}],["большинство",{"2":{"3":2,"6":1,"54":1}}],["большие",{"2":{"2":1}}],["более",{"2":{"2":1,"4":2,"5":1,"7":1,"8":1,"10":1,"11":3,"17":1,"18":1,"26":1,"34":1,"36":1,"39":1,"42":1,"43":1,"45":3,"46":1,"54":2}}],["бороться",{"2":{"2":1}}],["бэке",{"2":{"5":1,"45":2}}],["бэкенде",{"2":{"5":1,"54":2}}],["бэкенда",{"2":{"3":1,"4":2,"55":1}}],["бэкенд",{"0":{"3":1},"2":{"2":5,"3":5,"4":2,"35":1,"44":1,"45":1}}],["бэкенду",{"2":{"1":1}}],["бэкендом",{"0":{"0":1},"1":{"1":1},"2":{"1":2,"4":1,"58":1}}],["бэком",{"2":{"5":1}}],["бэкапов",{"2":{"34":1}}],["бэкапить",{"2":{"34":1}}],["бэка",{"2":{"2":1,"3":1,"45":1}}],["бэк",{"2":{"1":1,"2":2,"3":1,"40":1}}],["дня",{"2":{"54":1}}],["дней",{"2":{"50":1,"54":1}}],["дриллинг",{"2":{"43":1}}],["другую",{"2":{"48":1}}],["друг",{"2":{"46":1}}],["других",{"2":{"7":2,"20":2,"35":1,"45":2}}],["другими",{"2":{"32":1,"43":1,"46":1,"55":1}}],["другим",{"2":{"7":1,"11":1}}],["другие",{"2":{"3":1,"5":1,"6":3,"7":1,"9":1,"10":3,"11":2,"19":1,"35":1,"36":1,"40":1,"45":1,"52":1,"55":1}}],["другого",{"2":{"11":1,"43":2}}],["другое",{"2":{"7":1,"11":2,"20":1,"43":1}}],["другой",{"2":{"4":1,"7":1,"9":1,"34":1,"43":4,"46":1,"54":1}}],["другом",{"2":{"3":1,"11":1,"38":1,"46":1}}],["дюймов",{"2":{"40":1}}],["диаграммы",{"2":{"52":1}}],["диаграмму",{"2":{"9":1}}],["динамической",{"2":{"55":1}}],["динамическое",{"2":{"12":1}}],["динамически",{"2":{"55":1}}],["динамично",{"2":{"36":1,"45":1}}],["директорий",{"2":{"37":1}}],["директорию",{"2":{"34":1}}],["директория",{"2":{"34":2}}],["директива",{"2":{"12":1,"13":1,"14":1,"18":1,"19":1}}],["директивами",{"2":{"12":1}}],["директив",{"0":{"12":1},"1":{"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1},"2":{"19":1,"20":2,"27":1}}],["директивы",{"2":{"10":1,"12":2,"16":1,"19":2,"28":1}}],["дисциплине",{"2":{"30":1}}],["дисковое",{"2":{"39":1}}],["диск",{"2":{"2":1,"40":1}}],["дизайна",{"2":{"45":1}}],["дизайнерами",{"2":{"30":1}}],["дизайн",{"2":{"30":1,"75":1}}],["д",{"2":{"3":1,"7":1,"8":1,"10":1,"11":2,"18":1,"20":1,"51":1,"55":1}}],["дойти",{"2":{"55":1}}],["домашний",{"2":{"55":1}}],["доменов",{"2":{"4":1}}],["доменом",{"2":{"4":1}}],["домен",{"2":{"4":1,"35":3,"54":1}}],["домена",{"2":{"4":4,"35":1}}],["доброжелательные",{"2":{"54":1}}],["добавьте",{"2":{"34":1}}],["добавили",{"2":{"11":1}}],["добавить",{"2":{"40":1,"46":2,"53":1}}],["добавит",{"2":{"4":1}}],["добавление",{"2":{"42":1,"45":1,"74":1}}],["добавления",{"2":{"7":1}}],["добавляются",{"2":{"55":1}}],["добавлялись",{"2":{"6":1}}],["добавляется",{"2":{"36":1}}],["добавляет",{"2":{"4":1,"46":1,"53":1}}],["документ",{"2":{"53":1}}],["документирования",{"2":{"52":1}}],["документируйте",{"0":{"52":1}}],["документаций",{"2":{"55":1}}],["документация",{"2":{"43":1,"54":3,"76":1}}],["документации",{"2":{"19":1,"20":1,"34":1,"36":1,"54":1,"75":1}}],["документацию",{"2":{"7":1,"20":1}}],["документа",{"2":{"14":1}}],["допустим",{"2":{"46":1}}],["дополнительных",{"2":{"11":1,"32":1}}],["дополнительным",{"2":{"9":1}}],["дополнительные",{"2":{"6":1,"7":1,"55":1}}],["дополнительной",{"2":{"7":2}}],["доскролил",{"2":{"42":1}}],["достойны",{"2":{"54":1}}],["достаточно",{"2":{"40":1,"41":1,"45":1,"46":1,"55":1}}],["доставка",{"2":{"32":1}}],["доставки",{"2":{"8":1}}],["достижений",{"2":{"10":1}}],["доступе",{"2":{"54":1}}],["доступен",{"2":{"35":1}}],["доступной",{"2":{"43":1}}],["доступна",{"2":{"43":1}}],["доступными",{"2":{"30":1}}],["доступны",{"2":{"11":1,"36":1}}],["доступа",{"2":{"2":5,"3":1,"4":1,"11":1,"34":1,"40":1}}],["доступ",{"2":{"1":1,"2":3,"3":3,"4":8,"11":4,"35":1,"36":1,"43":2}}],["дочерние",{"2":{"20":1}}],["дочернего",{"2":{"11":1}}],["дороги",{"2":{"16":1}}],["догадались",{"2":{"10":1}}],["до",{"2":{"6":2,"7":2,"9":1,"11":1,"19":1,"20":1,"27":2,"36":1,"42":1,"55":3}}],["доводить",{"2":{"27":1}}],["довольно",{"2":{"3":2,"5":1,"40":1,"54":1,"55":1}}],["доверенных",{"2":{"4":2}}],["должна",{"2":{"7":1,"10":1,"11":1,"20":1,"34":1,"54":1}}],["должны",{"2":{"7":1,"9":2,"36":1,"42":1,"49":1}}],["должном",{"2":{"53":1}}],["должно",{"2":{"2":1,"3":1,"19":1,"44":1}}],["должен",{"2":{"2":1,"7":2,"17":1,"34":2,"43":1,"55":1}}],["дольше",{"2":{"2":1}}],["двоеточия",{"2":{"19":1}}],["двоеточие",{"2":{"13":1}}],["двойные",{"2":{"8":1}}],["двусмысленное",{"2":{"43":1}}],["двусторонним",{"2":{"18":1}}],["двухдневный",{"2":{"54":1}}],["двух",{"2":{"7":1}}],["двунаправленную",{"2":{"5":1}}],["два",{"2":{"2":1,"11":1,"17":1,"20":1,"46":1,"54":2,"55":2}}],["две",{"2":{"2":1,"5":1,"11":1}}],["даёт",{"2":{"40":1,"45":1,"54":1}}],["дат",{"2":{"42":1}}],["датами",{"2":{"41":1}}],["дату",{"2":{"34":1}}],["датой",{"2":{"34":1}}],["дать",{"2":{"2":1}}],["давид",{"2":{"30":1}}],["давайте",{"2":{"7":2,"8":1,"10":1,"11":2,"21":1}}],["давать",{"2":{"2":1}}],["даст",{"2":{"30":1,"45":1}}],["дадим",{"2":{"30":1}}],["да",{"2":{"11":2}}],["даже",{"2":{"2":1,"4":1,"6":2,"7":2,"20":1,"27":1,"42":1,"43":2,"45":1,"53":1,"54":2}}],["дает",{"2":{"2":1,"5":2,"11":1,"14":1,"42":1}}],["дал",{"2":{"43":1}}],["дальнейших",{"2":{"30":1}}],["дальнейшей",{"2":{"20":1,"28":1}}],["дальнейшем",{"2":{"9":1,"19":1,"53":1}}],["дальше",{"2":{"2":1,"7":1,"50":1}}],["далеко",{"2":{"3":1,"44":1,"47":1}}],["далее",{"2":{"2":1,"7":1,"8":1,"11":1,"26":1}}],["данная",{"2":{"45":1,"55":1}}],["данного",{"0":{"74":1},"2":{"34":1,"42":1,"43":1,"46":1}}],["данном",{"2":{"7":1,"8":1,"10":1,"11":1,"34":1,"43":1,"45":1}}],["данной",{"2":{"2":1,"12":1}}],["данный",{"2":{"11":1,"53":1,"76":1}}],["данным",{"2":{"4":1,"54":1}}],["данными",{"2":{"3":3}}],["данных",{"2":{"3":7,"4":1,"5":1,"7":2,"11":3,"17":1,"18":1,"30":1,"40":2,"43":4,"45":2,"46":1,"54":1,"55":1}}],["данные",{"2":{"2":2,"3":3,"4":1,"23":1,"42":1,"43":3,"45":4,"54":1,"55":3}}],["десктоп",{"2":{"55":1}}],["десятки",{"2":{"39":1,"40":1}}],["десятилетнем",{"2":{"38":1}}],["держать",{"2":{"54":1}}],["дереву",{"2":{"43":1}}],["дерева",{"2":{"20":1}}],["дерево",{"2":{"9":1}}],["детей",{"2":{"54":1}}],["детали",{"2":{"52":1}}],["детальную",{"2":{"46":1}}],["деталях",{"2":{"18":1}}],["декомпозиции",{"2":{"45":1}}],["декларируемое",{"2":{"43":1}}],["деньги",{"2":{"40":1}}],["деплое",{"2":{"34":1}}],["деплоится",{"2":{"34":1}}],["деплоить",{"2":{"34":1}}],["деплой",{"2":{"34":1,"60":1,"61":1}}],["деплоя",{"2":{"34":4,"54":1}}],["депозитами",{"2":{"2":1}}],["девопс",{"2":{"32":1}}],["делиться",{"2":{"43":1}}],["деле",{"2":{"26":1}}],["делайте",{"2":{"47":1,"49":1}}],["дела",{"2":{"46":1}}],["делающее",{"2":{"43":1}}],["делали",{"2":{"36":1}}],["делаем",{"2":{"11":1}}],["делается",{"2":{"2":1,"11":1}}],["делает",{"2":{"2":1,"5":1,"8":1,"10":1,"39":1,"40":1,"43":1,"45":1}}],["делать",{"2":{"3":1,"4":1,"40":1,"42":1,"43":1,"55":2}}],["действительно",{"2":{"38":1,"44":1}}],["действительная",{"2":{"2":1}}],["действий",{"2":{"32":1}}],["действии",{"2":{"9":1}}],["действия",{"2":{"2":1,"44":1}}],["действие",{"2":{"2":2,"9":1}}],["для",{"0":{"3":1,"28":1},"2":{"1":1,"2":4,"3":3,"4":3,"5":5,"6":4,"7":8,"8":5,"9":5,"10":9,"11":11,"16":2,"17":2,"19":3,"20":6,"21":1,"23":1,"26":4,"27":1,"28":2,"30":5,"32":1,"34":12,"35":3,"36":2,"37":1,"38":2,"39":8,"40":9,"41":2,"42":7,"43":5,"44":3,"45":8,"46":4,"48":1,"49":2,"50":1,"52":1,"53":2,"54":6,"55":18,"76":1}}],["тэгов",{"2":{"53":1}}],["тяжеловеса",{"2":{"42":1}}],["тяжеловесности",{"2":{"41":1}}],["тише",{"2":{"40":1}}],["тип",{"2":{"53":1}}],["типов",{"2":{"44":1}}],["типыref",{"2":{"43":1}}],["типы",{"2":{"18":1,"43":1}}],["типа",{"2":{"4":1,"10":1,"35":1,"36":1,"39":1,"46":1,"53":3,"54":1,"55":1}}],["тайлвинде",{"2":{"50":1}}],["таймстемпа",{"2":{"34":1}}],["тарифы",{"2":{"35":1}}],["таблицы",{"2":{"6":1}}],["там",{"2":{"3":1,"34":2,"40":1,"43":1,"44":1}}],["такую",{"2":{"9":1}}],["таки",{"2":{"54":1,"55":1}}],["такие",{"2":{"7":1,"18":2}}],["таким",{"2":{"2":2,"3":1,"8":1,"9":1,"17":1,"53":1}}],["также",{"2":{"2":2,"3":1,"6":2,"7":3,"10":3,"11":1,"12":2,"19":2,"20":2,"26":1,"35":1,"39":1,"40":1,"43":1,"44":1,"45":2,"48":1,"53":2,"54":5,"55":1,"74":1}}],["такого",{"2":{"11":1}}],["такой",{"2":{"11":1,"55":1}}],["таковыми",{"2":{"53":1}}],["таковы",{"2":{"7":1}}],["такового",{"2":{"2":1}}],["такое",{"2":{"2":2,"3":1,"4":1,"5":1,"6":1,"7":2,"9":1,"20":1,"28":1,"32":1,"34":1,"43":1,"44":1,"45":1,"46":1,"53":1,"55":1}}],["так",{"2":{"1":1,"2":1,"5":1,"6":1,"7":1,"8":1,"11":3,"16":2,"26":1,"34":3,"39":1,"40":1,"43":2,"44":1,"54":1,"55":3,"76":2}}],["т",{"2":{"3":1,"7":1,"8":1,"10":1,"11":2,"18":1,"20":1,"44":1,"46":1,"51":1,"55":1,"75":1}}],["тупиковой",{"2":{"55":1}}],["туда",{"2":{"3":1,"10":1,"49":1}}],["тут",{"2":{"3":1}}],["твой",{"2":{"2":1,"3":1,"40":1}}],["твоего",{"2":{"2":1}}],["твоему",{"2":{"2":1,"3":1}}],["твоем",{"2":{"2":1,"40":1}}],["ты",{"2":{"2":1,"46":1}}],["телеграм",{"2":{"76":1}}],["телодвижения",{"2":{"2":1}}],["тенденции",{"2":{"53":1}}],["тень",{"2":{"46":1}}],["тебе",{"2":{"46":1}}],["теcты",{"2":{"44":1}}],["тест",{"2":{"54":1}}],["тесты",{"2":{"44":7,"55":1}}],["тестам",{"2":{"43":1}}],["тестов",{"2":{"30":1,"44":3}}],["тестированием",{"2":{"44":2}}],["тестирование",{"0":{"44":1},"2":{"30":1,"44":2}}],["тестирования",{"2":{"3":1,"32":1,"34":1,"44":2}}],["те",{"2":{"12":1}}],["течение",{"2":{"11":1}}],["текущей",{"2":{"34":1,"42":1}}],["текущему",{"2":{"11":1}}],["текстовое",{"2":{"55":1}}],["текстов",{"2":{"30":1}}],["текстовый",{"2":{"10":1,"55":1}}],["текст",{"2":{"18":1,"55":2}}],["теге",{"2":{"12":1}}],["тег",{"2":{"8":1,"10":3,"11":1}}],["тега",{"2":{"8":2}}],["технического",{"2":{"52":1,"54":1}}],["технология",{"2":{"32":1}}],["технологии",{"2":{"6":1,"39":1,"54":1}}],["технологий",{"2":{"6":1}}],["тех",{"2":{"7":1,"20":1,"55":1}}],["теоретические",{"2":{"46":1}}],["теоретически",{"2":{"7":1}}],["теперь",{"2":{"7":1,"11":3,"20":1}}],["терминологией",{"2":{"7":1}}],["терминов",{"2":{"7":1}}],["терминами",{"2":{"7":1}}],["темам",{"2":{"76":1}}],["темы",{"2":{"6":1,"46":1}}],["теми",{"2":{"6":1}}],["тему",{"2":{"5":1,"44":1}}],["тем",{"2":{"5":2,"7":2,"9":1,"10":1,"11":2,"18":1,"30":1,"43":1}}],["теме",{"2":{"2":1,"4":1}}],["трудозатратней",{"2":{"55":1}}],["трудозатратам",{"2":{"55":1}}],["трудно",{"2":{"11":1}}],["трудностями",{"2":{"7":1}}],["трудностей",{"2":{"5":1}}],["тривиального",{"2":{"11":1}}],["три",{"2":{"10":1,"34":2}}],["трагедия",{"2":{"53":1}}],["традиционно",{"2":{"10":1}}],["традиционном",{"2":{"7":2}}],["транспиляции",{"2":{"39":1}}],["транспортные",{"2":{"5":1,"54":1}}],["транспортным",{"2":{"1":1}}],["трансформацию",{"2":{"6":1}}],["требования",{"2":{"53":1,"55":1}}],["требований",{"2":{"2":1}}],["требуются",{"2":{"42":1}}],["требуют",{"2":{"20":1,"35":1}}],["требуеться",{"2":{"39":1}}],["требует",{"2":{"5":1,"39":1}}],["требуется",{"2":{"3":1}}],["товаров",{"2":{"46":1}}],["товара",{"2":{"2":1,"46":1,"55":1}}],["торопитесь",{"2":{"47":1}}],["тормозит",{"2":{"46":1}}],["торговые",{"2":{"7":1}}],["тоже",{"2":{"45":1,"55":1}}],["тонкую",{"2":{"40":1}}],["тонкий",{"2":{"11":2}}],["той",{"2":{"16":1,"34":1,"43":1}}],["точней",{"2":{"55":1}}],["точно",{"2":{"4":1,"26":1}}],["точка",{"2":{"55":1}}],["точки",{"2":{"10":1,"30":1,"43":3,"75":1}}],["точку",{"2":{"8":1}}],["тот",{"2":{"7":2,"11":1,"45":1,"54":1}}],["том",{"2":{"6":1,"7":4,"8":1,"9":1,"11":1,"16":1,"30":1,"55":1}}],["тобой",{"2":{"3":1}}],["то",{"2":{"2":4,"3":3,"7":7,"9":1,"10":2,"11":3,"13":2,"14":1,"20":1,"28":2,"34":1,"35":1,"39":1,"40":1,"42":2,"43":5,"44":4,"45":1,"46":3,"48":2,"54":4,"55":6}}],["того",{"2":{"2":1,"7":2,"8":2,"11":7,"19":1,"28":1,"34":3,"39":2,"43":1,"45":1,"46":1,"47":1,"55":3}}],["тогда",{"2":{"1":1,"19":1}}],["только",{"2":{"2":2,"3":1,"4":2,"7":1,"8":1,"9":1,"10":1,"11":2,"13":2,"16":1,"21":1,"32":1,"38":1,"40":3,"42":2,"43":4,"45":1,"50":1,"53":2}}],["токена",{"2":{"2":2}}],["токенах",{"2":{"2":2}}],["токеном",{"2":{"2":1}}],["токену",{"2":{"2":1}}],["токен",{"2":{"2":7,"75":2}}],["вряд",{"2":{"54":1}}],["вроде",{"2":{"43":1,"55":1}}],["вращающихся",{"2":{"40":1}}],["время",{"2":{"7":2,"8":2,"9":1,"11":1,"20":1,"40":1,"42":1,"43":1,"44":5,"46":1,"47":1,"49":1,"54":1}}],["времена",{"2":{"53":1}}],["временами",{"2":{"6":1}}],["времени",{"2":{"11":1,"44":1,"49":1,"53":1,"54":1}}],["временем",{"2":{"11":1,"34":1}}],["временное",{"2":{"4":1}}],["вторых",{"2":{"54":1}}],["вторично",{"2":{"40":1}}],["второй",{"2":{"40":3}}],["втором",{"2":{"2":2}}],["введите",{"2":{"74":1}}],["введи",{"2":{"46":1}}],["введенный",{"2":{"42":1}}],["введем",{"2":{"8":1}}],["вводились",{"2":{"45":1}}],["вводить",{"2":{"47":1}}],["вводит",{"2":{"18":1}}],["вводе",{"2":{"45":1}}],["ввода",{"2":{"18":1}}],["влияет",{"2":{"12":1,"47":1}}],["входе",{"2":{"55":1}}],["входа",{"2":{"10":1,"45":1,"55":1}}],["входит",{"2":{"4":1,"75":1}}],["впечатление",{"2":{"75":1}}],["вперед",{"2":{"19":1}}],["вплоть",{"2":{"7":1}}],["вполне",{"2":{"2":1,"43":1,"45":1,"54":1}}],["взлетевших",{"2":{"45":1}}],["взлететь",{"2":{"40":1}}],["взяли",{"2":{"46":1}}],["взяв",{"2":{"45":1}}],["взять",{"2":{"7":1}}],["взгляд",{"2":{"11":1,"30":1}}],["взглянуть",{"2":{"5":1}}],["взвесить",{"2":{"7":1}}],["взаимодействия",{"2":{"46":1}}],["взаимодействий",{"2":{"6":1}}],["взаимозаменяемые",{"2":{"7":1}}],["вниз",{"2":{"76":1}}],["внимание",{"2":{"6":1,"7":1,"8":3,"10":1,"11":1}}],["вновь",{"2":{"53":1}}],["вносит",{"2":{"53":1}}],["вносят",{"2":{"6":1}}],["внутрь",{"2":{"40":1}}],["внутренние",{"2":{"45":1}}],["внутренних",{"2":{"20":1}}],["внутренней",{"2":{"20":1}}],["внутреннем",{"2":{"11":1}}],["внутри",{"2":{"7":3,"8":2,"17":1,"36":1,"42":3,"43":1}}],["внесения",{"2":{"74":1}}],["внесенных",{"2":{"7":1}}],["внесите",{"0":{"74":1}}],["внешней",{"2":{"43":1}}],["внешнего",{"2":{"6":1}}],["внешний",{"2":{"6":1}}],["включается",{"2":{"40":1}}],["включать",{"2":{"6":1,"40":1}}],["включая",{"2":{"6":1,"39":1,"40":1,"53":1}}],["вместе",{"2":{"5":1,"20":1,"47":1}}],["вместо",{"2":{"4":1,"9":1,"10":1,"11":1,"39":1,"55":1}}],["ветвью",{"2":{"55":1}}],["ветках",{"2":{"43":1}}],["ветки",{"2":{"34":2}}],["ветку",{"2":{"34":2}}],["вести",{"2":{"55":1}}],["веса",{"2":{"53":1}}],["весь",{"2":{"9":1,"11":1}}],["весьма",{"2":{"7":1}}],["вентиляторов",{"2":{"40":1}}],["ведет",{"2":{"19":1}}],["ведут",{"2":{"16":1,"17":1}}],["ведущие",{"2":{"9":1}}],["великолепным",{"2":{"10":1}}],["верен",{"2":{"55":1}}],["верстку",{"2":{"53":1}}],["верстать",{"2":{"50":1,"53":1}}],["версию",{"2":{"34":1,"54":1,"55":1}}],["версии",{"2":{"34":2}}],["версия",{"2":{"6":1}}],["верхнего",{"2":{"24":1}}],["вернулся",{"2":{"53":1}}],["вернуть",{"2":{"11":1}}],["верное",{"2":{"7":1}}],["вернет",{"2":{"4":1}}],["вероятность",{"2":{"7":1,"44":1,"46":1}}],["веба",{"2":{"53":1}}],["вебсервер",{"2":{"35":1,"40":1,"55":1}}],["вебсервере",{"2":{"35":1}}],["вебсервера",{"2":{"4":1,"40":1}}],["вебсайта",{"2":{"34":1,"75":1}}],["вебсайт",{"2":{"34":1}}],["веб",{"0":{"8":1},"1":{"9":1},"2":{"4":2,"6":4,"7":2,"8":2,"9":2,"10":1,"13":1,"17":1,"30":1,"40":1,"44":1,"46":2,"55":3}}],["вещи",{"2":{"3":1,"42":1}}],["визуальной",{"2":{"75":1}}],["визуальных",{"2":{"45":1}}],["визуализации",{"2":{"53":1}}],["визуализацию",{"2":{"43":1,"45":1}}],["виртуальный",{"2":{"3":1,"35":1,"54":1}}],["виджетов",{"2":{"43":1}}],["видимой",{"2":{"38":1}}],["видит",{"2":{"2":1}}],["виду",{"2":{"14":1}}],["вида",{"2":{"6":1}}],["вид",{"2":{"6":1}}],["видео",{"2":{"36":1,"54":3,"55":1}}],["видели",{"2":{"19":1}}],["виде",{"2":{"3":2,"6":1,"7":2,"10":1}}],["видно",{"2":{"2":1}}],["встречал",{"2":{"54":1}}],["встретить",{"2":{"21":1,"26":1}}],["встроенные",{"0":{"20":1}}],["встроенных",{"0":{"12":1},"1":{"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1},"2":{"19":1,"20":1}}],["встроенного",{"2":{"6":1}}],["вставке",{"2":{"20":1}}],["вступает",{"2":{"9":1}}],["вскоре",{"2":{"6":1}}],["всём",{"2":{"43":1}}],["всё",{"2":{"4":1,"40":1,"45":2,"46":1,"54":1,"55":1,"75":1}}],["всевозможных",{"2":{"54":1}}],["всей",{"2":{"9":1}}],["всегда",{"2":{"7":2,"10":1,"22":1,"26":1,"36":1,"43":1,"47":1}}],["всего",{"2":{"2":1,"3":1,"13":1,"42":2,"43":1,"54":1}}],["всех",{"2":{"4":1,"26":1,"45":2,"55":1}}],["всеми",{"2":{"55":2}}],["всемирная",{"2":{"6":1}}],["всему",{"2":{"10":1,"43":2,"46":1}}],["всем",{"2":{"4":2,"42":1,"46":1}}],["все",{"2":{"2":1,"6":3,"7":1,"8":1,"9":1,"10":2,"11":5,"14":1,"19":1,"20":1,"21":1,"26":2,"27":1,"42":1,"45":1,"53":1,"54":1,"55":1}}],["всячески",{"2":{"74":1}}],["всяких",{"2":{"55":1}}],["вся",{"2":{"1":1,"53":1}}],["воркер",{"2":{"75":1}}],["вообще",{"2":{"36":1,"38":1,"40":2,"55":1}}],["воплотить",{"2":{"30":1}}],["вопросах",{"2":{"76":1}}],["вопроса",{"2":{"74":1}}],["вопросами",{"2":{"28":1}}],["вопросе",{"2":{"54":1}}],["вопросов",{"2":{"54":1,"76":1}}],["вопросом",{"2":{"44":1}}],["вопросы",{"0":{"28":1},"2":{"28":1,"76":1}}],["вопрос",{"2":{"7":2,"54":1,"74":1}}],["воспользоваться",{"2":{"28":1,"40":1,"55":1}}],["воспринимайте",{"2":{"7":1}}],["восстановлено",{"2":{"20":1}}],["волнуйтесь",{"2":{"9":1}}],["волшебства",{"2":{"7":1}}],["вот",{"2":{"4":1,"5":1,"10":1,"11":2,"17":1,"18":1,"40":1,"41":1,"46":1,"54":1}}],["во",{"0":{"43":1},"2":{"2":2,"8":3,"9":1,"11":1,"20":1,"26":1,"40":2,"42":4,"43":7,"44":1,"45":3,"53":1,"54":2,"55":1}}],["возможным",{"2":{"43":1}}],["возможностях",{"2":{"55":1}}],["возможностей",{"2":{"6":1,"40":1,"41":1,"42":1,"55":1}}],["возможности",{"0":{"51":1},"2":{"6":3,"34":1,"39":1,"42":1,"45":1}}],["возможностью",{"2":{"3":1,"35":1}}],["возможность",{"2":{"2":2,"3":3,"7":1,"11":1,"44":1,"45":1,"47":1}}],["возможно",{"2":{"3":1,"11":1,"28":1,"30":1,"34":1,"45":3,"46":1}}],["возвращайтесь",{"2":{"54":1}}],["возвращающая",{"2":{"42":1}}],["возвращающей",{"2":{"11":1}}],["возвращаемое",{"2":{"18":1}}],["возвращается",{"2":{"36":1}}],["возвращает",{"2":{"2":2,"3":1,"8":2,"11":1}}],["возьмет",{"2":{"8":1}}],["возьмем",{"2":{"7":1}}],["возрасти",{"2":{"7":1}}],["возникает",{"2":{"7":1}}],["возникнуть",{"2":{"4":1}}],["вокруг",{"2":{"1":1,"43":1}}],["валидация",{"2":{"43":1}}],["валиден",{"2":{"2":1}}],["ванильному",{"2":{"11":1}}],["важных",{"2":{"30":1}}],["важны",{"2":{"28":1,"44":1}}],["важные",{"2":{"7":1,"30":1,"52":1}}],["важно",{"2":{"9":1,"10":1,"11":1,"14":1,"26":2}}],["вам",{"2":{"7":4,"8":1,"10":1,"11":2,"21":1,"28":2,"30":2,"35":1,"36":1,"39":1,"47":1,"53":1,"54":1,"55":1}}],["варианта",{"2":{"54":1}}],["вариантами",{"2":{"30":1}}],["вариант",{"2":{"5":1,"7":2,"42":1,"54":1}}],["варианты",{"0":{"3":1,"11":1},"2":{"2":1,"6":1,"35":1}}],["вариантов",{"2":{"2":1,"7":1,"8":1,"39":1}}],["вас",{"2":{"10":1,"28":1,"42":1,"43":1}}],["васи",{"2":{"2":1}}],["вася",{"2":{"2":1}}],["ваши",{"2":{"43":1}}],["ваша",{"2":{"26":1}}],["ваше",{"2":{"7":1,"36":1,"47":1,"74":1}}],["вашей",{"2":{"7":1}}],["вашего",{"2":{"4":1,"7":1,"20":1,"34":2,"35":1,"47":2,"49":1,"55":1}}],["вашему",{"2":{"1":1,"35":2,"43":1}}],["вашем",{"2":{"1":1,"36":1,"55":1}}],["ваш",{"2":{"3":1,"7":1,"8":1,"26":1,"34":2,"36":1,"42":1,"52":1,"54":1,"55":2}}],["вашу",{"2":{"1":1,"7":1}}],["в",{"0":{"8":1,"12":1,"21":1,"74":1},"1":{"9":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"22":1,"23":1,"24":1,"25":1,"26":1},"2":{"1":5,"2":18,"3":9,"4":8,"5":1,"6":13,"7":36,"8":13,"9":12,"10":13,"11":37,"12":4,"13":1,"14":1,"16":6,"17":4,"18":5,"19":6,"20":12,"21":3,"22":1,"23":1,"24":1,"25":1,"26":5,"27":2,"28":3,"30":8,"32":2,"34":15,"35":3,"36":15,"38":1,"39":14,"40":13,"41":2,"42":11,"43":35,"44":5,"45":16,"46":7,"47":2,"53":11,"54":9,"55":22,"61":1,"76":3}}],["выявлении",{"2":{"55":1}}],["выше",{"2":{"55":1}}],["вышедшая",{"2":{"54":1}}],["выгоде",{"2":{"55":1}}],["выглядят",{"2":{"41":1,"43":1}}],["выглядит",{"2":{"11":1,"17":1,"43":1,"55":2}}],["выглядеть",{"2":{"1":1}}],["выучить",{"2":{"54":1}}],["выделяет",{"2":{"45":1}}],["выделить",{"2":{"1":1}}],["выборе",{"2":{"54":1}}],["выбору",{"2":{"34":1}}],["выбрать",{"2":{"40":1}}],["выбирает",{"2":{"8":1}}],["выбирая",{"2":{"7":2}}],["вывод",{"2":{"40":1,"55":1}}],["вывода",{"2":{"20":1}}],["вывести",{"2":{"20":1}}],["выведенных",{"2":{"4":1}}],["вычисления",{"2":{"45":1,"46":1}}],["вычислительном",{"2":{"16":1}}],["вычисляемые",{"2":{"11":1}}],["выражаю",{"2":{"30":1}}],["выражение",{"2":{"19":1}}],["выражением",{"2":{"16":1}}],["выработайте",{"2":{"11":1}}],["выработки",{"2":{"7":1}}],["выходы",{"2":{"11":1}}],["выходящие",{"2":{"6":1}}],["выигрыш",{"2":{"7":1}}],["вы",{"2":{"6":1,"7":7,"8":1,"9":2,"10":4,"11":3,"21":1,"26":3,"28":3,"35":2,"36":1,"38":1,"39":1,"43":3,"48":1,"50":1,"54":1,"74":1}}],["высокой",{"2":{"6":1}}],["вытеснены",{"2":{"6":1}}],["выполнена",{"2":{"19":1}}],["выполнением",{"2":{"9":1}}],["выполнения",{"2":{"8":1,"9":3,"19":1,"20":1,"34":1,"42":1}}],["выполнить",{"2":{"46":1}}],["выполнит",{"2":{"9":2}}],["выполняет",{"2":{"55":1}}],["выполняется",{"2":{"3":1,"11":2,"17":1}}],["выполняют",{"2":{"43":1,"45":1,"54":1}}],["выполняются",{"2":{"8":1}}],["выполнять",{"2":{"16":1}}],["выписан",{"2":{"2":2}}],["вызвало",{"2":{"11":1}}],["вызвать",{"2":{"3":1}}],["вызывает",{"2":{"19":1}}],["вызываем",{"2":{"8":2}}],["вызываться",{"2":{"3":1}}],["вызов",{"2":{"8":1}}],["вызовет",{"2":{"5":1}}],["вызовов",{"2":{"1":1}}],["охватывает",{"2":{"76":1}}],["оффлайн",{"2":{"55":2}}],["официально",{"2":{"43":1}}],["официальной",{"2":{"19":1,"20":1}}],["официальная",{"2":{"43":1,"76":1}}],["официальные",{"2":{"40":1}}],["официальным",{"2":{"9":1}}],["ощущениям",{"2":{"55":1}}],["окном",{"2":{"46":1}}],["окружению",{"2":{"34":1}}],["окружения",{"2":{"34":1,"35":1}}],["окружений",{"2":{"34":1}}],["окружение",{"2":{"20":1}}],["окружает",{"2":{"10":2}}],["ом",{"2":{"45":1,"55":1}}],["ооп",{"2":{"43":1,"45":1,"46":3}}],["очищаются",{"2":{"20":1}}],["очевидно",{"2":{"9":1}}],["очевидным",{"2":{"8":1,"10":1}}],["очередь",{"2":{"8":1,"43":2}}],["очень",{"2":{"2":3,"3":2,"7":1,"8":1,"9":2,"11":1,"17":1,"35":1,"39":1,"40":4,"42":3,"43":1,"44":1,"45":1,"52":1,"53":1,"54":3,"55":3}}],["ожидает",{"2":{"14":1,"19":1}}],["ожидаемые",{"2":{"11":1}}],["оговорками",{"2":{"11":1}}],["ограничений",{"2":{"11":1,"43":1,"55":1}}],["ограничения",{"2":{"7":1,"53":1}}],["ограничивает",{"2":{"10":1}}],["огромные",{"2":{"7":1}}],["огромная",{"2":{"7":1}}],["ошибок",{"2":{"61":1}}],["ошибка",{"2":{"11":1,"46":1}}],["ошибки",{"2":{"4":1,"40":1}}],["ошибетесь",{"2":{"10":1}}],["ознакомьтесь",{"2":{"54":1}}],["ознакомились",{"2":{"9":1}}],["ознакомиться",{"2":{"2":1}}],["означает",{"2":{"7":2,"11":1}}],["ориентированных",{"2":{"46":1}}],["ориентированными",{"2":{"10":1}}],["ориентированного",{"2":{"45":1}}],["ориентированное",{"2":{"45":1}}],["ориентация",{"2":{"7":1}}],["организовывать",{"2":{"11":1}}],["организовать",{"2":{"5":1,"9":1,"11":1}}],["организация",{"2":{"11":1}}],["организации",{"2":{"8":1,"35":1,"45":1}}],["о",{"0":{"29":1,"45":1},"1":{"30":1},"2":{"6":1,"7":1,"8":2,"9":1,"10":1,"11":1,"30":2,"38":1,"42":2,"45":2,"55":2,"61":1}}],["одну",{"2":{"45":1}}],["одним",{"2":{"10":1,"11":1}}],["однако",{"2":{"7":2,"10":1,"11":5,"26":1,"27":1,"41":1,"42":1,"43":2,"53":1,"54":2,"55":2}}],["одного",{"2":{"43":2}}],["однозначно",{"2":{"40":1,"45":1}}],["одностраничные",{"2":{"30":1}}],["одном",{"2":{"10":1,"45":1}}],["однофайловый",{"2":{"10":1}}],["однофайловых",{"0":{"10":1},"2":{"8":1}}],["однофайловые",{"2":{"6":1,"28":1}}],["одной",{"2":{"7":3,"36":1,"43":1}}],["одно",{"2":{"7":1,"11":1,"34":1,"45":1}}],["одинаковыми",{"2":{"39":1}}],["один",{"2":{"2":2,"9":1,"10":1,"13":1,"20":1,"39":1,"43":4,"44":1,"55":1}}],["опционально",{"2":{"74":1}}],["опции",{"2":{"10":1,"11":1,"42":1}}],["оповестить",{"2":{"45":1}}],["оперативной",{"2":{"40":1}}],["операций",{"2":{"16":1}}],["описываются",{"2":{"76":1}}],["описывающие",{"2":{"11":1}}],["описывайте",{"2":{"52":1}}],["описан",{"2":{"34":1}}],["описания",{"2":{"11":1}}],["описание",{"2":{"10":1,"20":1,"55":1}}],["описаны",{"2":{"6":1}}],["описать",{"2":{"10":1}}],["оптимизация",{"2":{"55":1}}],["оптимизаций",{"2":{"9":1}}],["оптимизировать",{"2":{"9":1}}],["опытный",{"2":{"54":1}}],["опытных",{"2":{"5":1,"76":2}}],["опытному",{"2":{"54":1}}],["опыт",{"2":{"10":1,"54":1,"55":1,"75":2}}],["опыта",{"2":{"5":1,"8":1}}],["определённых",{"2":{"46":1}}],["определили",{"2":{"26":1}}],["определиться",{"2":{"7":1}}],["определять",{"2":{"11":1}}],["определяю",{"2":{"11":1}}],["определяют",{"2":{"8":2,"11":2}}],["определяющие",{"2":{"7":1,"10":2}}],["определяемого",{"2":{"16":1}}],["определяем",{"2":{"8":2}}],["определяете",{"2":{"10":1,"43":1}}],["определяется",{"2":{"2":1,"11":1}}],["определяет",{"2":{"2":1,"6":1,"7":1,"8":1,"10":1}}],["определено",{"2":{"20":1}}],["определен",{"2":{"11":1}}],["определение",{"2":{"43":1}}],["определению",{"2":{"7":1}}],["определения",{"2":{"7":1,"46":1}}],["определенного",{"2":{"42":1}}],["определенному",{"2":{"3":1,"7":1}}],["определенных",{"2":{"43":1}}],["определенные",{"2":{"7":1,"8":1,"11":1}}],["определенными",{"2":{"10":1,"11":2}}],["определенным",{"2":{"2":1,"3":1}}],["оно",{"2":{"7":1,"11":1,"13":1,"55":1}}],["она",{"2":{"7":2,"10":1,"13":1,"14":2,"18":1,"19":1,"20":2,"34":1,"42":2,"43":2,"45":1,"47":1}}],["они",{"2":{"6":1,"7":2,"16":3,"17":1,"20":3,"21":1,"22":1,"24":1,"25":1,"26":1,"34":1,"36":3,"39":1,"43":1,"45":2,"49":1,"54":2,"55":1}}],["он",{"2":{"2":3,"5":1,"6":1,"7":2,"10":2,"11":1,"20":2,"34":2,"39":1,"40":2,"42":1,"43":1,"44":1,"45":1,"46":1,"55":3}}],["онлайн",{"2":{"2":1,"39":1,"40":1,"46":1,"55":1}}],["обман",{"2":{"55":1}}],["обмену",{"2":{"11":1}}],["обхода",{"2":{"55":1}}],["обязательно",{"2":{"54":2}}],["обязательными",{"2":{"26":1}}],["обязательным",{"2":{"11":1}}],["обучающие",{"2":{"54":1}}],["обучение",{"2":{"53":1}}],["оболочку",{"2":{"55":1}}],["оболочки",{"2":{"46":1}}],["оборачивайте",{"2":{"53":1}}],["обоснования",{"2":{"46":1}}],["обозначаются",{"2":{"23":1}}],["облегчит",{"2":{"48":1}}],["облегчили",{"2":{"45":1}}],["области",{"2":{"11":2,"43":1}}],["обладает",{"2":{"7":1}}],["облачные",{"2":{"35":1}}],["облачных",{"2":{"3":1}}],["облачном",{"2":{"32":1,"35":1}}],["облачное",{"2":{"3":1}}],["обзор",{"2":{"41":1}}],["обычным",{"2":{"55":1}}],["обычными",{"2":{"36":1}}],["обычные",{"2":{"45":1}}],["обычных",{"2":{"26":1,"55":1}}],["обычный",{"2":{"10":2,"39":1}}],["обычное",{"2":{"55":1}}],["обычной",{"2":{"45":1}}],["обычном",{"2":{"11":1}}],["обычного",{"2":{"7":1,"10":1}}],["обычно",{"2":{"2":1,"5":1,"7":1,"9":1,"20":1,"42":1,"43":2,"44":1,"45":1,"54":1,"55":1}}],["общий",{"2":{"26":1}}],["общих",{"2":{"7":2}}],["общую",{"2":{"11":1,"30":1}}],["общепризнанная",{"2":{"76":1}}],["общее",{"2":{"75":1}}],["общей",{"2":{"7":1,"42":1}}],["общем",{"2":{"7":1}}],["общение",{"2":{"5":1,"58":1}}],["об",{"2":{"7":1,"9":1,"11":2,"18":1,"45":2,"54":1}}],["оберток",{"2":{"55":1}}],["обертки",{"0":{"48":1},"2":{"48":1,"55":1}}],["обертка",{"2":{"1":1,"20":1,"45":1}}],["обернуть",{"2":{"46":1}}],["обернутый",{"2":{"20":1}}],["обеспечат",{"2":{"35":1}}],["обеспечивающих",{"2":{"30":1}}],["обеспечивает",{"2":{"6":1,"11":1}}],["обеспечить",{"2":{"7":1}}],["обеспечения",{"2":{"5":1,"6":1,"7":1,"20":1,"30":1,"44":1}}],["объяснению",{"2":{"55":1}}],["объяснить",{"2":{"54":1}}],["объявить",{"2":{"10":1}}],["объявлять",{"2":{"11":1}}],["объявляют",{"2":{"11":2}}],["объявляем",{"2":{"8":1,"11":1}}],["объявляется",{"2":{"4":1,"11":1,"12":1}}],["объявлены",{"2":{"43":1}}],["объявлено",{"2":{"19":1}}],["объявленным",{"2":{"11":1}}],["объявленного",{"2":{"4":1}}],["объявление",{"2":{"4":1}}],["объективная",{"2":{"76":1}}],["объектным",{"2":{"46":1}}],["объектно",{"2":{"10":1,"45":1,"46":1}}],["объектов",{"2":{"26":1,"42":1}}],["объектом",{"2":{"11":1}}],["объекту",{"2":{"11":1}}],["объектах",{"2":{"42":1}}],["объекта",{"2":{"11":2,"14":1,"17":1,"42":2,"43":1,"45":1,"46":1}}],["объектами",{"2":{"42":1}}],["объектам",{"2":{"4":2}}],["объекты",{"2":{"11":2,"18":1,"23":1,"43":1,"45":1}}],["объекте",{"2":{"8":1,"42":1,"54":1}}],["объект",{"2":{"8":3,"10":1,"11":9,"42":2}}],["оба",{"2":{"3":1,"39":1}}],["обнаружились",{"2":{"55":1}}],["обнаружить",{"2":{"47":1}}],["обновится",{"2":{"45":1}}],["обновляться",{"2":{"44":1}}],["обновляет",{"2":{"2":1}}],["обновление",{"2":{"34":1,"45":1}}],["обновлении",{"2":{"13":1,"45":1}}],["обнуляет",{"2":{"2":1}}],["обрабатываются",{"2":{"54":1}}],["обрабатывать",{"2":{"36":1,"55":2}}],["обработка",{"2":{"46":1}}],["обработке",{"2":{"46":1}}],["обработки",{"2":{"7":1}}],["обработана",{"2":{"20":1}}],["образец",{"2":{"34":1}}],["образу",{"2":{"7":1}}],["образом",{"2":{"2":2,"3":1,"9":2,"17":2,"53":1}}],["обратите",{"2":{"8":3,"10":1,"11":1}}],["обратиться",{"2":{"20":1}}],["обратить",{"2":{"6":1,"7":1}}],["обратной",{"2":{"11":1}}],["обратно",{"2":{"2":1}}],["обращения",{"2":{"11":1,"55":1}}],["обращении",{"2":{"3":1,"55":2}}],["обращается",{"2":{"4":1}}],["обращаешься",{"2":{"3":1}}],["обращаться",{"2":{"3":1,"6":1,"54":1}}],["ос",{"2":{"40":1}}],["осущестляется",{"2":{"36":1}}],["осуществления",{"2":{"1":1}}],["остаться",{"2":{"43":1}}],["остальное",{"2":{"10":1,"40":1}}],["остается",{"2":{"1":1}}],["основательным",{"2":{"43":1}}],["основа",{"2":{"28":1}}],["основаны",{"2":{"7":1}}],["основ",{"2":{"27":1,"30":1}}],["основе",{"2":{"6":1,"7":1,"20":1,"43":1}}],["основная",{"2":{"20":1}}],["основное",{"2":{"43":1}}],["основной",{"2":{"40":1,"43":1,"52":1}}],["основном",{"2":{"20":1}}],["основного",{"2":{"1":1}}],["основных",{"2":{"44":1}}],["основным",{"2":{"8":1}}],["основные",{"2":{"2":1,"32":1,"44":1,"46":1,"76":1}}],["особенность",{"2":{"45":1}}],["особенно",{"2":{"5":1,"44":1}}],["отзывами",{"2":{"55":1}}],["отдавать",{"2":{"55":1}}],["отделить",{"2":{"45":1,"54":1}}],["отделит",{"2":{"10":1}}],["отдельного",{"2":{"45":1,"46":1}}],["отдельном",{"2":{"43":1}}],["отдельную",{"2":{"43":1}}],["отдельная",{"2":{"4":1}}],["отдельными",{"2":{"4":1}}],["отдельный",{"2":{"1":2,"10":1,"53":1}}],["отстает",{"2":{"54":1}}],["отслеживает",{"2":{"42":3}}],["отслеживания",{"2":{"17":1,"42":2}}],["отметить",{"2":{"53":1,"54":1}}],["отнимают",{"2":{"44":1}}],["относительно",{"2":{"55":1}}],["относится",{"2":{"11":4}}],["отношении",{"2":{"16":1}}],["отношению",{"2":{"11":1}}],["отовсюду",{"2":{"43":1}}],["отобразить",{"2":{"14":1,"20":1}}],["отображено",{"2":{"17":1}}],["отображение",{"2":{"43":1}}],["отображении",{"2":{"16":1,"20":2}}],["отображения",{"2":{"7":1,"8":1,"16":2,"17":1,"55":1}}],["отображающий",{"2":{"43":1}}],["отображаются",{"2":{"11":1}}],["отображать",{"2":{"36":1}}],["отображаемые",{"2":{"11":1}}],["отображается",{"2":{"7":1,"20":1}}],["откуда",{"2":{"45":1}}],["отката",{"2":{"34":1}}],["открытыми",{"2":{"54":1}}],["открытые",{"2":{"3":1}}],["открытом",{"2":{"54":1}}],["открывающем",{"2":{"12":1}}],["открывает",{"2":{"8":1}}],["отрисовкой",{"2":{"55":1}}],["отреагировать",{"2":{"19":1}}],["отражаться",{"2":{"13":1}}],["отражаются",{"2":{"6":1}}],["отличный",{"2":{"54":1}}],["отлично",{"2":{"45":1}}],["отличное",{"2":{"39":1}}],["отличия",{"2":{"45":1}}],["отличие",{"2":{"16":1,"42":1,"43":2,"45":1}}],["отличаются",{"2":{"42":1}}],["отличается",{"2":{"4":1,"44":1}}],["отвечающие",{"2":{"43":1,"45":1}}],["отвечает",{"2":{"2":1}}],["ответов",{"2":{"76":2}}],["ответах",{"2":{"76":1}}],["ответа",{"2":{"74":1}}],["ответственная",{"2":{"43":1}}],["ответить",{"2":{"7":1,"28":1}}],["ответ",{"2":{"4":2,"54":1,"74":1}}],["ответе",{"2":{"4":2}}],["отпечаток",{"2":{"2":1}}],["отправлять",{"2":{"55":1}}],["отправляемые",{"2":{"11":1}}],["отправляет",{"2":{"2":1}}],["отправка",{"2":{"1":1}}],["от",{"2":{"1":1,"2":1,"4":4,"6":2,"7":3,"8":1,"10":1,"11":3,"16":2,"27":1,"35":1,"36":1,"42":1,"43":1,"44":2,"45":3,"49":1,"53":1,"54":3,"75":1}}],["иерарxичную",{"2":{"53":1}}],["иерархичного",{"2":{"45":1}}],["иерархии",{"2":{"10":1,"43":2}}],["играет",{"2":{"45":1}}],["ивент",{"2":{"43":1}}],["ивенты",{"2":{"43":1}}],["ивентов",{"2":{"43":1}}],["иконка",{"2":{"55":1}}],["иконками",{"2":{"36":1}}],["иконку",{"2":{"36":2}}],["иконки",{"2":{"36":2,"39":1}}],["идею",{"2":{"55":1}}],["идеально",{"2":{"45":1}}],["идеале",{"2":{"43":1}}],["идет",{"2":{"40":1,"76":1}}],["идея",{"2":{"20":1,"43":1}}],["идентификатор",{"2":{"11":1}}],["идентификатором",{"2":{"8":2}}],["итоге",{"2":{"26":1,"40":1,"43":1}}],["итоговый",{"2":{"53":1}}],["итогов",{"0":{"27":1}}],["итого",{"2":{"2":1}}],["итераторе",{"2":{"17":1}}],["итак",{"2":{"7":1}}],["исправление",{"2":{"61":1}}],["испортит",{"2":{"44":1}}],["исполнения",{"2":{"8":1}}],["использовались",{"2":{"42":1}}],["использована",{"2":{"11":1,"20":1}}],["использован",{"2":{"7":1,"11":1}}],["использования",{"2":{"7":1,"8":1,"11":2,"42":1,"43":1,"54":1,"55":1}}],["использовании",{"2":{"5":1,"9":2,"11":1,"16":1}}],["использованием",{"2":{"36":1,"55":1}}],["использование",{"0":{"8":1},"1":{"9":1},"2":{"4":1,"7":1,"11":2,"20":1,"43":1,"45":1,"53":1,"55":1,"75":1}}],["использоваться",{"2":{"13":1}}],["использовать",{"2":{"3":1,"5":1,"7":7,"8":2,"9":2,"10":7,"11":4,"14":1,"18":1,"19":3,"20":2,"21":1,"26":2,"36":3,"39":1,"45":2,"46":3,"50":1}}],["используйте",{"0":{"48":1,"50":1,"51":1},"2":{"10":2,"16":2,"26":1,"42":2,"48":1,"53":1}}],["использую",{"2":{"8":1}}],["используют",{"2":{"6":1,"21":1}}],["используются",{"2":{"2":1,"7":1,"20":1,"28":1,"34":1,"39":1,"45":1}}],["использующего",{"2":{"4":1}}],["используя",{"2":{"3":1,"7":1,"9":1,"11":1,"34":1,"39":2,"74":1}}],["используете",{"2":{"48":1}}],["использует",{"2":{"34":1,"37":1,"39":1,"42":2,"43":1}}],["используется",{"2":{"2":1,"4":1,"6":1,"11":1,"17":1,"19":1,"34":1,"39":1,"42":1,"45":2,"54":1,"76":1}}],["используемые",{"2":{"9":1,"11":1,"12":1,"46":1}}],["используемый",{"2":{"2":1,"20":1}}],["используем",{"2":{"8":2,"10":2,"11":2,"13":1,"18":1}}],["используемая",{"2":{"7":1}}],["используемого",{"2":{"4":1,"7":1}}],["история",{"0":{"56":1},"1":{"57":1,"58":1,"59":1,"60":1,"61":1,"62":1,"63":1,"64":1,"65":1,"66":1}}],["исторически",{"2":{"43":1}}],["источники",{"2":{"54":1,"76":1}}],["источнику",{"2":{"4":1,"54":1}}],["источник",{"2":{"4":1}}],["источников",{"2":{"4":3}}],["исходного",{"2":{"40":1}}],["исходных",{"2":{"30":1}}],["исключительных",{"2":{"55":1}}],["исключением",{"2":{"43":1}}],["исключения",{"2":{"7":1}}],["искренне",{"2":{"30":1}}],["исчерпывающим",{"2":{"11":1}}],["их",{"2":{"3":1,"7":3,"9":2,"10":2,"11":1,"20":4,"26":1,"27":1,"34":1,"36":4,"41":1,"42":1,"43":5,"44":1,"45":3,"48":1,"49":1}}],["иных",{"2":{"55":1}}],["иная",{"2":{"45":1}}],["иначе",{"2":{"10":1,"19":1,"43":1}}],["ингридиент",{"2":{"44":1}}],["иного",{"2":{"53":1}}],["иногда",{"2":{"43":1,"46":1,"53":1}}],["ином",{"2":{"42":1}}],["иной",{"2":{"7":2,"34":1}}],["инструкции",{"2":{"34":1}}],["инструменты",{"2":{"30":1,"32":1,"55":1}}],["инструмент",{"2":{"8":1,"52":1}}],["интеграционные",{"2":{"44":1}}],["интеграция",{"2":{"32":1,"43":1}}],["интересными",{"2":{"76":1}}],["интересный",{"2":{"34":1}}],["интерактивности",{"2":{"45":1}}],["интернационализационным",{"2":{"42":1}}],["интернационализации",{"2":{"42":1}}],["интернационализация",{"2":{"42":1}}],["интернет",{"2":{"4":4,"6":1,"54":1}}],["интернете",{"2":{"3":1,"5":1,"53":1,"54":1}}],["интернета",{"2":{"3":1}}],["интерполированное",{"2":{"17":1}}],["интерполяцией",{"2":{"8":1,"17":1}}],["интерпретации",{"2":{"11":1}}],["интерпретировано",{"2":{"14":1}}],["интерпретировать",{"2":{"9":1,"10":1}}],["интерпретируются",{"2":{"8":1}}],["интерфейс",{"2":{"10":1}}],["интерфейсов",{"2":{"7":2}}],["интерфейса",{"2":{"3":1,"10":2,"18":1,"30":1,"44":1}}],["инкапсулировали",{"2":{"45":1}}],["инкапсулирует",{"2":{"10":1,"45":1}}],["инкапсуляции",{"2":{"26":1}}],["инженеру",{"2":{"32":1}}],["инженерии",{"2":{"6":1,"7":1}}],["инжектируемых",{"2":{"23":1}}],["инжектируемые",{"2":{"23":1}}],["индексируется",{"2":{"55":1}}],["индексации",{"2":{"55":1}}],["индексы",{"2":{"17":1}}],["индекс",{"2":{"17":1}}],["индивидуально",{"2":{"2":1}}],["инвертирует",{"2":{"7":1}}],["инициирующей",{"2":{"4":1}}],["инета",{"2":{"3":1}}],["информационной",{"2":{"34":1}}],["информацию",{"2":{"20":1,"54":1}}],["информацией",{"2":{"10":1,"34":1}}],["информация",{"2":{"2":1,"76":1}}],["информации",{"2":{"2":1,"30":1,"54":1,"76":2}}],["изначально",{"2":{"46":1,"55":1}}],["избегайте",{"0":{"47":1}}],["избегаемы",{"2":{"42":1}}],["избежать",{"2":{"45":1}}],["изобретено",{"2":{"45":1}}],["изображения",{"2":{"36":2}}],["изобразить",{"2":{"9":1}}],["изощренных",{"2":{"40":1}}],["изолированные",{"2":{"9":1}}],["извлекаем",{"2":{"8":1}}],["изучайте",{"2":{"54":1}}],["изучать",{"2":{"7":1,"58":1}}],["изучения",{"2":{"27":1,"54":2}}],["изучение",{"0":{"12":1,"54":1},"1":{"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1},"2":{"50":1}}],["изучить",{"2":{"7":1,"34":1}}],["изучим",{"2":{"6":1}}],["изменится",{"2":{"20":1,"40":1}}],["изменить",{"2":{"11":1,"16":1,"45":1,"46":1,"53":1}}],["изменилось",{"2":{"11":1}}],["изменился",{"2":{"2":1}}],["изменено",{"0":{"58":1,"61":1,"64":1},"2":{"7":1}}],["изменении",{"2":{"7":1,"45":2}}],["изменений",{"0":{"56":1},"1":{"57":1,"58":1,"59":1,"60":1,"61":1,"62":1,"63":1,"64":1,"65":1,"66":1},"2":{"7":1,"17":1,"32":1,"42":1,"74":1}}],["изменениях",{"2":{"43":1}}],["изменениями",{"2":{"40":1,"45":2}}],["изменения",{"2":{"6":3,"42":2,"61":1}}],["изменяется",{"2":{"7":2}}],["изменяться",{"2":{"45":1}}],["изменять",{"2":{"6":1,"11":1,"45":1}}],["изменяющие",{"2":{"6":1}}],["из",{"2":{"2":1,"3":1,"5":1,"6":3,"7":5,"8":2,"9":2,"10":2,"11":7,"12":1,"14":1,"16":2,"17":1,"20":1,"34":4,"36":5,"37":1,"39":2,"42":1,"43":5,"44":1,"45":1,"46":1,"50":1,"54":1,"55":1}}],["имитирует",{"2":{"44":1}}],["имя",{"2":{"11":2,"26":1,"34":1,"74":1}}],["импорт",{"2":{"43":1}}],["импортируя",{"2":{"20":1}}],["импортируется",{"2":{"11":1}}],["импортирует",{"2":{"9":1}}],["импортируем",{"2":{"8":1,"11":2}}],["импортировать",{"2":{"7":1,"8":1,"9":1,"11":2,"36":2,"38":1}}],["импортированы",{"2":{"36":1}}],["импортирован",{"2":{"7":1}}],["импорта",{"2":{"7":1,"37":1}}],["им",{"2":{"2":1,"53":1,"55":1}}],["имеем",{"2":{"11":1}}],["имеет",{"2":{"2":4,"3":1,"5":1,"8":1,"11":1,"14":1,"17":1,"45":2}}],["имеют",{"2":{"10":1,"11":2,"12":1,"43":1,"53":1}}],["имели",{"2":{"9":1}}],["иметь",{"2":{"6":1,"11":1,"14":1,"26":1,"40":1,"43":1}}],["имени",{"2":{"36":1}}],["именами",{"2":{"36":1}}],["имена",{"0":{"24":1,"25":1},"2":{"4":1,"8":1}}],["именем",{"2":{"4":1,"38":1}}],["именно",{"2":{"2":1,"6":2,"9":1,"10":1,"11":1,"43":1,"45":1,"54":2}}],["или",{"0":{"5":1},"2":{"1":2,"2":2,"3":1,"4":4,"5":2,"7":9,"8":1,"9":1,"10":1,"11":6,"12":1,"14":4,"16":3,"17":1,"18":1,"19":1,"20":3,"35":1,"36":1,"38":1,"39":2,"42":2,"43":11,"45":2,"46":1,"47":1,"48":2,"53":3,"54":5,"55":3,"74":3}}],["и",{"0":{"2":1,"11":1,"16":1,"17":1,"19":1,"22":1,"24":1,"25":1,"39":1,"48":1,"51":1,"53":1,"55":1,"75":1},"2":{"1":3,"2":23,"3":16,"4":3,"5":4,"6":24,"7":29,"8":14,"9":9,"10":15,"11":33,"12":1,"16":3,"17":1,"18":4,"19":4,"20":9,"21":2,"22":1,"23":4,"24":1,"25":1,"26":5,"27":4,"28":1,"30":17,"32":3,"34":18,"35":5,"36":7,"39":8,"40":20,"41":3,"42":14,"43":30,"44":6,"45":24,"46":14,"47":1,"49":5,"50":4,"51":2,"52":2,"53":22,"54":25,"55":30,"61":2,"74":1,"75":3,"76":7}}],["убить",{"2":{"54":1}}],["убедиться",{"2":{"28":1}}],["учебник",{"2":{"54":2}}],["учитывают",{"2":{"55":1}}],["учитывать",{"2":{"39":1}}],["учит",{"2":{"54":2}}],["учителем",{"2":{"54":1}}],["учиться",{"2":{"46":1}}],["ухудшает",{"2":{"53":1}}],["укоряет",{"2":{"53":1}}],["указать",{"2":{"45":1}}],["указателей",{"2":{"11":1}}],["указателями",{"2":{"11":1}}],["указана",{"2":{"4":1}}],["указанную",{"2":{"4":1}}],["указывает",{"2":{"8":1,"11":2}}],["уязвимость",{"2":{"47":1}}],["уязвимости",{"2":{"43":1}}],["утилитами",{"2":{"48":1}}],["утилит",{"0":{"48":1}}],["утилиты",{"2":{"43":1,"46":1}}],["утечку",{"2":{"10":1}}],["умирает",{"2":{"43":1}}],["умение",{"2":{"54":1}}],["умении",{"2":{"53":1}}],["умел",{"2":{"54":1}}],["умело",{"2":{"6":1}}],["уме",{"2":{"28":1}}],["уж",{"2":{"26":1}}],["уже",{"2":{"3":1,"5":1,"10":1,"11":2,"26":1,"34":1,"42":1,"44":1,"45":1,"46":1,"54":1,"55":2}}],["улучшайте",{"2":{"54":1}}],["улучшая",{"2":{"49":1}}],["улучшение",{"2":{"42":1}}],["улучшения",{"2":{"7":1}}],["улучшить",{"2":{"55":1}}],["улучшит",{"2":{"16":1}}],["узнаем",{"2":{"30":3}}],["узнаете",{"2":{"11":1}}],["узнать",{"2":{"8":1}}],["уникален",{"2":{"43":1}}],["уникальный",{"2":{"17":1}}],["универсальный",{"2":{"36":2}}],["унификации",{"2":{"5":1}}],["унаследован",{"2":{"11":1}}],["упомянутый",{"2":{"10":1}}],["упакует",{"2":{"9":1}}],["упакован",{"2":{"9":1}}],["упростит",{"2":{"48":1}}],["упрощенную",{"2":{"55":1}}],["упрощенно",{"2":{"45":1}}],["упрощенное",{"2":{"9":1}}],["упрощает",{"2":{"5":1,"34":1}}],["управляемое",{"2":{"55":1}}],["управлять",{"2":{"8":1,"10":1,"30":1,"45":2}}],["управления",{"2":{"43":3}}],["управлению",{"2":{"7":1}}],["управление",{"2":{"7":1,"11":1,"30":1}}],["увидели",{"2":{"55":1}}],["увидим",{"2":{"9":1,"11":1,"19":2}}],["увидите",{"2":{"7":1}}],["уверенным",{"2":{"54":1}}],["увеличивает",{"2":{"36":1,"47":1}}],["увеличивается",{"2":{"36":1}}],["увеличения",{"2":{"6":1}}],["ускоряет",{"2":{"53":1}}],["ускорить",{"2":{"46":1,"53":1}}],["ускорению",{"2":{"11":1}}],["усложняться",{"2":{"55":1}}],["условий",{"2":{"36":1}}],["условиях",{"2":{"7":1}}],["условные",{"2":{"16":1}}],["услуг",{"2":{"46":1}}],["успешности",{"2":{"46":1}}],["успевает",{"2":{"40":1}}],["успехов",{"2":{"30":1}}],["устареть",{"2":{"53":1}}],["устареет",{"2":{"47":1}}],["устаревает",{"2":{"43":1}}],["устаревшие",{"2":{"40":1}}],["устаревший",{"2":{"39":1}}],["устарели",{"2":{"54":1}}],["устарел",{"2":{"41":1,"43":1}}],["устанавливается",{"2":{"39":1}}],["устанавливаться",{"2":{"6":1}}],["установлена",{"2":{"55":1}}],["установленную",{"2":{"34":1}}],["установите",{"2":{"54":1}}],["установить",{"2":{"3":1,"8":1,"35":1}}],["установке",{"2":{"55":2}}],["установкой",{"2":{"11":1,"30":1}}],["установка",{"2":{"9":1,"10":1,"11":1,"30":1}}],["установки",{"2":{"4":1,"34":1,"40":1,"42":1}}],["усилия",{"2":{"7":1}}],["уровень",{"2":{"2":2,"46":1,"52":1,"76":1}}],["уровне",{"2":{"42":1,"44":1,"54":2}}],["уровнем",{"2":{"1":1}}],["уровня",{"2":{"2":1,"45":1,"54":1}}],["у",{"2":{"2":2,"3":4,"5":1,"10":2,"11":1,"26":1,"28":1,"34":1,"42":1,"43":4,"46":1,"53":1,"54":1,"55":2}}],["удаленном",{"2":{"34":1}}],["удаленный",{"2":{"34":4}}],["удаление",{"2":{"42":1}}],["удалении",{"2":{"20":1}}],["удаления",{"2":{"2":1}}],["удаляют",{"2":{"16":1}}],["удаляя",{"2":{"14":1}}],["удобство",{"2":{"75":2}}],["удобства",{"2":{"2":1,"20":1,"75":1}}],["удобен",{"2":{"5":1}}],["удобней",{"2":{"43":1,"53":1}}],["удобнее",{"2":{"5":1}}],["удобную",{"0":{"41":1},"2":{"40":1,"53":1}}],["удобная",{"2":{"46":1}}],["удобна",{"2":{"40":1}}],["удобны",{"2":{"35":1}}],["удобный",{"2":{"34":1,"40":1,"42":1,"52":1,"54":1}}],["удобным",{"2":{"26":1}}],["удобных",{"2":{"19":1}}],["удобно",{"2":{"1":2,"11":1,"17":1,"40":1,"43":2,"53":1}}],["удостовериться",{"2":{"2":1}}],["удостоверяется",{"2":{"2":2}}],["кто",{"2":{"44":1,"45":1,"55":1}}],["курсов",{"2":{"54":1}}],["курс",{"2":{"46":1,"54":1}}],["кучу",{"2":{"45":1}}],["куча",{"2":{"43":1}}],["кучи",{"2":{"42":1}}],["кулер",{"2":{"40":1}}],["куда",{"2":{"40":1,"45":1}}],["купить",{"2":{"35":1}}],["куку",{"2":{"2":1}}],["кэширование",{"2":{"55":1}}],["кэширования",{"2":{"34":1}}],["кэширующий",{"2":{"43":1}}],["кэше",{"2":{"20":1}}],["книжка",{"2":{"54":1}}],["книга",{"2":{"54":2}}],["книги",{"2":{"9":1,"12":1,"30":1,"54":1}}],["книге",{"0":{"21":1,"29":1},"1":{"22":1,"23":1,"24":1,"25":1,"26":1,"30":1},"2":{"6":3,"7":1,"11":2,"19":1,"21":2,"27":1,"30":1}}],["кнопку",{"2":{"20":1,"46":1}}],["кнопкам",{"2":{"46":1}}],["кнопка",{"2":{"19":1}}],["кнопке",{"2":{"19":1}}],["кнопкой",{"2":{"10":1}}],["кем",{"2":{"7":1}}],["ключу",{"2":{"42":1}}],["ключ",{"2":{"34":1}}],["ключевыми",{"2":{"30":1}}],["ключевое",{"2":{"11":2}}],["ключевой",{"2":{"7":1}}],["клавиатуры",{"2":{"40":1}}],["клавиатуру",{"2":{"40":1}}],["класть",{"2":{"36":1,"43":1}}],["классами",{"2":{"46":1}}],["класс",{"2":{"36":1}}],["классу",{"2":{"11":1}}],["классический",{"2":{"11":1,"54":1}}],["классов",{"0":{"24":1},"2":{"7":2,"20":1,"46":1,"53":1}}],["кладет",{"2":{"2":1}}],["клиентом",{"2":{"55":1}}],["клиент",{"2":{"5":2,"40":2}}],["клиентам",{"2":{"4":1}}],["клиента",{"2":{"4":3,"55":1}}],["кроулером",{"2":{"55":1}}],["кроме",{"2":{"8":1,"11":3,"19":1,"34":3,"39":1,"43":2,"45":1,"46":1,"47":1,"54":1,"55":2}}],["кругозор",{"2":{"54":1}}],["крутятся",{"2":{"40":1}}],["крупного",{"2":{"8":1}}],["крупных",{"2":{"3":1}}],["красиво",{"2":{"55":1}}],["красивую",{"2":{"53":1}}],["кратко",{"2":{"8":1,"28":1}}],["кражей",{"2":{"2":1}}],["критичных",{"2":{"2":1}}],["криптография",{"2":{"2":1}}],["казаться",{"2":{"55":1}}],["кабинета",{"2":{"46":1}}],["каталога",{"2":{"46":1}}],["категориями",{"2":{"46":1}}],["категорией",{"2":{"43":1}}],["кандидатов",{"2":{"45":1}}],["канала",{"0":{"0":1},"1":{"1":1}}],["капотом",{"2":{"45":1}}],["картинок",{"2":{"38":1}}],["картинками",{"2":{"55":1}}],["картинка",{"2":{"38":1}}],["картинки",{"2":{"36":6,"55":2}}],["картинке",{"2":{"13":1,"55":1}}],["карьере",{"2":{"30":1}}],["качества",{"2":{"38":1}}],["качество",{"2":{"30":1,"53":1,"75":2}}],["качественные",{"2":{"54":1}}],["качественный",{"2":{"40":1}}],["качестве",{"2":{"8":1,"11":1,"55":1,"76":1}}],["кажется",{"2":{"11":1}}],["каждым",{"2":{"55":1}}],["каждый",{"2":{"2":2,"7":1,"11":2,"20":1,"39":1,"43":3,"45":1,"46":1}}],["каждая",{"2":{"17":1,"43":1}}],["каждую",{"2":{"10":1}}],["каждое",{"2":{"11":1,"24":1}}],["каждого",{"2":{"7":1,"10":1,"20":1,"34":2,"39":1}}],["каждому",{"2":{"2":1,"34":1}}],["каждом",{"2":{"2":1,"7":1,"13":1,"45":1,"46":1}}],["камне",{"2":{"7":1}}],["касается",{"2":{"43":1}}],["кастомные",{"2":{"53":1}}],["кастомных",{"2":{"46":1}}],["кастомными",{"2":{"39":1}}],["кастомный",{"2":{"35":1}}],["кастомную",{"2":{"3":1}}],["каскадные",{"2":{"6":1}}],["какая",{"2":{"40":1}}],["какую",{"2":{"8":1}}],["каких",{"2":{"7":1,"55":1}}],["какие",{"2":{"6":1,"9":1,"28":1,"42":1,"45":1,"54":2}}],["какой",{"2":{"7":1,"8":1,"38":1,"40":1,"47":1,"48":1}}],["какое",{"2":{"6":1}}],["каком",{"2":{"3":1}}],["как",{"2":{"2":5,"3":3,"4":1,"5":4,"6":1,"7":8,"8":2,"9":6,"10":4,"11":13,"14":1,"16":2,"18":2,"20":1,"26":1,"30":4,"34":2,"36":3,"38":1,"39":3,"40":3,"42":5,"43":7,"44":1,"45":1,"52":2,"53":4,"54":3,"55":9,"58":1,"76":2}}],["к",{"2":{"1":1,"2":4,"3":7,"4":6,"6":3,"7":1,"11":19,"13":1,"18":1,"20":3,"28":1,"35":2,"36":1,"40":4,"43":2,"46":1,"50":1,"54":3,"55":3}}],["коврике",{"2":{"55":1}}],["коп",{"2":{"45":1}}],["копирования",{"2":{"39":1}}],["копий",{"2":{"17":1}}],["ко",{"2":{"43":1,"46":1}}],["корректировку",{"2":{"74":1}}],["коридоре",{"2":{"55":1}}],["короткий",{"2":{"54":1}}],["короткоживущий",{"2":{"2":1}}],["корень",{"2":{"34":1}}],["координация",{"2":{"7":1}}],["координации",{"2":{"7":1}}],["координировать",{"2":{"7":1}}],["коллеги",{"2":{"54":1}}],["коллекций",{"2":{"17":1}}],["коллекция",{"2":{"7":1}}],["колоночной",{"2":{"53":1}}],["колоночным",{"2":{"50":1}}],["количеством",{"2":{"42":1,"44":1}}],["количество",{"2":{"6":1}}],["количества",{"2":{"2":1}}],["которую",{"2":{"8":1,"34":1,"43":1,"54":1}}],["которое",{"2":{"19":1,"44":1}}],["которого",{"2":{"11":4}}],["которой",{"2":{"8":1}}],["которому",{"2":{"17":1}}],["котором",{"2":{"6":2,"10":1,"35":1,"42":1,"43":1}}],["которая",{"2":{"5":1,"7":1,"8":1,"11":1,"14":1,"43":2,"45":1,"53":1,"54":1,"55":1}}],["которых",{"2":{"6":1,"7":1,"9":1,"11":1,"17":1,"43":1,"45":1,"55":1}}],["которыми",{"2":{"26":1,"43":1}}],["которым",{"2":{"4":1,"11":1,"26":1,"53":1}}],["который",{"2":{"3":2,"4":2,"6":1,"7":2,"8":2,"9":1,"10":4,"11":4,"20":2,"21":1,"36":1,"39":1,"43":3,"44":1,"45":1,"55":2}}],["которые",{"2":{"2":1,"4":1,"6":5,"8":2,"9":3,"10":1,"11":4,"12":1,"16":1,"19":3,"20":3,"21":1,"35":1,"36":1,"53":1,"54":1,"55":2}}],["консистентности",{"2":{"43":1}}],["конструкции",{"2":{"43":1}}],["конструкторы",{"2":{"23":1}}],["конструктора",{"2":{"11":1}}],["конструктор",{"2":{"8":1,"11":3}}],["константные",{"2":{"23":1}}],["константе",{"2":{"11":1}}],["константа",{"2":{"11":2}}],["константы",{"0":{"23":1},"2":{"11":2}}],["константу",{"2":{"11":2}}],["конфликтуют",{"2":{"40":1}}],["конфигурациях",{"2":{"55":1}}],["конфигурация",{"2":{"40":1}}],["конфигурационного",{"2":{"34":1}}],["конфигом",{"2":{"40":1}}],["конфиге",{"2":{"39":1}}],["контакты",{"2":{"74":1}}],["контрагентами",{"2":{"45":1}}],["контролирует",{"2":{"42":1,"45":1}}],["контроль",{"2":{"11":2,"30":1}}],["контент",{"2":{"55":1}}],["контентом",{"2":{"55":2}}],["контента",{"2":{"6":1,"8":1,"20":1,"55":1}}],["контекста",{"2":{"11":1}}],["конечный",{"2":{"11":1}}],["конечного",{"2":{"30":1}}],["конечном",{"2":{"26":1}}],["конечно",{"2":{"5":1,"46":1,"55":1}}],["концептуальные",{"2":{"30":1}}],["концепцию",{"2":{"11":1}}],["концепции",{"2":{"9":1,"46":1}}],["концепцией",{"2":{"7":1}}],["концепций",{"2":{"6":1}}],["концепция",{"2":{"6":1,"7":1,"11":1}}],["конце",{"2":{"8":1}}],["концу",{"2":{"6":1}}],["конкретном",{"2":{"7":1}}],["конкретное",{"2":{"4":1,"11":1}}],["конкретные",{"2":{"7":1}}],["конкурировать",{"2":{"6":1}}],["конкурировали",{"2":{"6":1}}],["кончается",{"2":{"2":2}}],["кончился",{"2":{"2":1}}],["комфорту",{"2":{"55":1}}],["комфортно",{"2":{"43":1}}],["комфортней",{"2":{"40":1}}],["комментирование",{"2":{"75":1}}],["комментариями",{"2":{"2":1}}],["коммерческих",{"2":{"34":1}}],["командой",{"2":{"55":1}}],["командной",{"2":{"39":1}}],["команд",{"2":{"34":1,"45":1}}],["команда",{"2":{"26":1}}],["команде",{"2":{"7":1,"26":1}}],["команды",{"2":{"7":1}}],["компетентные",{"2":{"54":1}}],["компаниях",{"2":{"54":1}}],["компании",{"2":{"2":1}}],["компьютера",{"2":{"40":1}}],["компьютере",{"2":{"39":1,"55":1}}],["композаблы",{"2":{"46":1}}],["композабле",{"2":{"43":1}}],["композаблом",{"2":{"43":1}}],["композабл",{"2":{"42":1,"43":4,"46":1}}],["композиция",{"2":{"9":1,"10":2,"18":1,"30":1}}],["компонентно",{"2":{"45":1}}],["компонентом",{"2":{"43":2}}],["компонентов",{"0":{"10":1,"24":1},"2":{"6":1,"8":1,"9":2,"10":2,"11":2,"19":2,"20":5,"27":1,"30":2,"41":1,"43":1}}],["компоненту",{"2":{"11":1}}],["компонентами",{"0":{"48":1},"2":{"10":1,"11":2,"18":1}}],["компонента",{"2":{"9":1,"10":4,"11":7,"20":4,"43":4,"46":1,"53":2}}],["компонентах",{"2":{"1":1,"10":1,"11":1}}],["компонент",{"2":{"8":2,"9":1,"10":3,"11":4,"20":7,"36":1,"38":1,"42":1,"43":7,"45":3,"48":1,"53":2}}],["компоненты",{"0":{"20":1},"2":{"6":1,"9":2,"10":3,"11":2,"18":1,"20":2,"28":1,"43":2,"45":2,"46":1,"48":2,"49":1,"53":3}}],["компоненте",{"2":{"1":1,"43":3}}],["компиляция",{"2":{"8":1}}],["компромиссы",{"2":{"7":1}}],["компромисс",{"2":{"7":2}}],["компромиссами",{"2":{"7":1}}],["комплексное",{"2":{"2":1}}],["кому",{"2":{"2":1}}],["когда",{"2":{"2":4,"3":1,"4":1,"6":1,"7":8,"8":1,"11":3,"14":1,"16":1,"18":2,"19":1,"20":4,"36":1,"42":2,"43":3,"53":1,"54":1,"55":3}}],["кодироваться",{"2":{"36":1}}],["кодовых",{"2":{"21":1,"27":1}}],["кодовые",{"0":{"21":1},"1":{"22":1,"23":1,"24":1,"25":1,"26":1},"2":{"26":1}}],["кодом",{"2":{"3":1,"27":1}}],["кодера",{"2":{"40":1}}],["коде",{"2":{"11":3,"26":1,"28":1,"45":1,"46":1,"53":1}}],["кода",{"2":{"1":2,"3":1,"7":2,"8":1,"9":1,"10":2,"11":6,"26":1,"30":2,"32":2,"34":1,"40":1,"45":3,"47":1,"49":2,"53":2,"54":1,"55":2,"75":1}}],["код",{"2":{"1":2,"4":1,"5":1,"7":1,"8":2,"9":2,"11":5,"21":1,"26":1,"30":1,"34":1,"40":1,"42":1,"49":1,"54":2}}],["сюда",{"2":{"75":1}}],["сгенеренные",{"2":{"55":1}}],["сгенерировать",{"2":{"35":1}}],["сэкономить",{"2":{"53":1}}],["сэкономит",{"2":{"47":1}}],["схожи",{"2":{"45":1}}],["сжатие",{"2":{"38":1}}],["смысл",{"2":{"55":1}}],["смысле",{"2":{"16":1,"43":1}}],["смартфоне",{"2":{"55":1}}],["смартфона",{"2":{"55":1}}],["сможете",{"2":{"50":1}}],["смонтирован",{"2":{"11":1}}],["смонтировать",{"2":{"8":1}}],["смену",{"2":{"45":1}}],["смешивает",{"2":{"45":1}}],["см",{"2":{"20":1}}],["ссылки",{"2":{"23":3,"39":1}}],["ссылке",{"2":{"11":1}}],["ссылаемой",{"2":{"18":1}}],["ссылаться",{"2":{"11":2,"17":1}}],["сделанный",{"2":{"55":1}}],["сделали",{"2":{"55":1}}],["сделал",{"2":{"50":1}}],["сделайте",{"2":{"48":1,"54":2}}],["сделав",{"2":{"47":1}}],["сделает",{"2":{"10":1,"26":1}}],["сделать",{"2":{"2":2,"3":3,"35":1,"42":1,"43":1,"45":1,"46":1,"55":1}}],["сборок",{"2":{"39":1}}],["сборщиком",{"2":{"9":1,"10":1}}],["сборщики",{"2":{"9":1}}],["сборщика",{"0":{"9":1},"2":{"9":2,"10":1,"11":1,"39":3}}],["сборщик",{"2":{"8":1,"9":1,"10":1,"11":1,"39":3}}],["сборка",{"0":{"39":1},"2":{"8":1,"34":1,"39":1}}],["сборки",{"2":{"8":1}}],["сценария",{"2":{"8":1}}],["сценарий",{"2":{"2":1}}],["скилл",{"2":{"54":1}}],["скачать",{"2":{"54":1}}],["скачивает",{"2":{"34":1}}],["сказать",{"2":{"45":1}}],["склонений",{"2":{"42":1}}],["скрыто",{"2":{"16":1}}],["скрытия",{"2":{"16":1}}],["скрываться",{"2":{"16":1}}],["скрывают",{"2":{"16":1}}],["скрывая",{"2":{"16":1}}],["скрывает",{"2":{"14":1}}],["скромное",{"2":{"8":2}}],["скрипта",{"2":{"55":1}}],["скриптами",{"2":{"55":1}}],["скриптам",{"2":{"44":1}}],["скрипт",{"2":{"3":2}}],["скопируйте",{"2":{"47":1}}],["скорости",{"2":{"55":1}}],["скорость",{"2":{"36":1}}],["скоростью",{"2":{"7":1}}],["скорей",{"2":{"43":1}}],["сколько",{"2":{"17":1,"39":1}}],["скобки",{"2":{"8":1}}],["считать",{"2":{"46":1}}],["считает",{"2":{"43":1}}],["считается",{"2":{"4":1,"54":1}}],["считывать",{"2":{"43":1}}],["счет",{"2":{"7":1}}],["снять",{"2":{"55":1}}],["сне",{"2":{"42":1}}],["снова",{"2":{"20":1}}],["снизить",{"2":{"53":1}}],["снижает",{"2":{"55":1}}],["снижают",{"2":{"44":1}}],["снижением",{"2":{"7":1}}],["снимать",{"2":{"2":1}}],["снимаются",{"2":{"2":1}}],["сначала",{"2":{"6":1,"8":1,"9":1,"10":1,"11":1}}],["субъективное",{"2":{"76":1}}],["сущности",{"2":{"45":1}}],["сущность",{"2":{"43":1}}],["существенные",{"2":{"45":1}}],["существующего",{"2":{"54":1}}],["существуют",{"2":{"7":2,"20":1,"45":1}}],["существует",{"2":{"6":1,"7":2,"8":1,"11":2,"41":1}}],["сути",{"2":{"2":1,"3":1,"42":1,"43":1}}],["семантические",{"2":{"51":1}}],["секунд",{"2":{"40":1}}],["секции",{"2":{"10":1,"11":1}}],["сейчас",{"2":{"9":1,"27":1,"35":1,"54":1}}],["себе",{"2":{"9":1,"45":1}}],["себя",{"2":{"6":2,"7":1,"9":1,"16":1,"17":1,"19":1,"36":1,"43":1,"45":2,"54":1}}],["селекторы",{"2":{"8":1}}],["сети",{"2":{"8":1}}],["сетями",{"2":{"7":1}}],["сертификация",{"2":{"54":1}}],["сертификат",{"2":{"35":3}}],["сертификаты",{"2":{"35":1}}],["серая",{"2":{"7":1}}],["сервиcа",{"2":{"3":1}}],["сервиса",{"2":{"3":2,"5":1,"55":1}}],["сервисов",{"2":{"3":3}}],["сервисы",{"2":{"2":1,"3":1,"26":1,"40":1,"43":1,"54":1}}],["сервис",{"0":{"1":1},"2":{"1":1,"3":1,"45":1,"54":1,"75":1}}],["серверному",{"2":{"55":1}}],["серверных",{"2":{"5":1}}],["сервера",{"2":{"4":1,"30":1,"36":1,"42":1,"55":6}}],["сервере",{"2":{"3":1,"4":2,"32":1,"34":2,"35":1,"55":1,"60":1,"61":1}}],["сервером",{"2":{"3":1,"55":1}}],["сервер",{"2":{"1":1,"3":2,"4":2,"5":2,"34":2,"35":1,"40":1,"54":1,"55":3}}],["сегодня",{"2":{"6":2}}],["ситуациях",{"2":{"46":1}}],["ситуация",{"2":{"45":1}}],["ситуацией",{"2":{"43":1}}],["ситуации",{"2":{"7":1}}],["синглтон",{"2":{"43":1}}],["синтез",{"2":{"43":1}}],["синтаксисом",{"2":{"11":1,"20":1}}],["синтаксисы",{"2":{"10":1}}],["синтаксис",{"2":{"10":2,"11":6}}],["синтаксиса",{"2":{"6":1,"10":1,"30":1}}],["синхронизацию",{"2":{"18":1}}],["сих",{"2":{"9":1,"19":1}}],["сильное",{"2":{"38":1}}],["сильно",{"2":{"5":1,"11":2,"39":1,"42":1,"44":1,"45":2,"48":1,"53":1,"54":2,"55":1}}],["систем",{"2":{"45":1}}],["системе",{"2":{"45":1}}],["системы",{"2":{"2":2,"45":1,"46":1,"53":1}}],["систему",{"2":{"2":1}}],["системами",{"2":{"45":1}}],["система",{"2":{"2":2}}],["сверху",{"2":{"76":1}}],["сваливает",{"2":{"45":1}}],["своя",{"2":{"34":1,"42":1}}],["своих",{"2":{"55":1}}],["своим",{"2":{"40":1,"43":1}}],["своими",{"2":{"34":1}}],["свои",{"2":{"26":1,"39":2,"43":1,"45":1,"46":1,"48":1,"53":2}}],["свободу",{"2":{"11":1}}],["свою",{"2":{"8":1,"10":1,"43":2,"46":1,"47":1}}],["своем",{"2":{"53":1}}],["своему",{"2":{"39":2}}],["свое",{"2":{"16":1,"54":1}}],["своей",{"2":{"3":1,"26":1,"55":1}}],["своего",{"2":{"3":2,"5":1,"55":1}}],["свойствами",{"2":{"55":1}}],["свойства",{"2":{"11":1}}],["свой",{"0":{"3":1},"2":{"3":2,"10":1,"11":2,"34":1,"35":2,"54":3}}],["связыванием",{"2":{"18":1}}],["связывает",{"2":{"13":1,"19":1}}],["связь",{"2":{"5":1}}],["связанность",{"2":{"46":1}}],["связанные",{"2":{"46":1}}],["связанными",{"2":{"11":1}}],["связанных",{"2":{"6":1}}],["связанный",{"2":{"1":1}}],["связаны",{"2":{"2":1,"46":1}}],["связи",{"0":{"0":1},"1":{"1":1},"2":{"1":2,"11":1,"35":1}}],["среднем",{"2":{"54":1}}],["среднего",{"2":{"7":2,"54":1}}],["среди",{"2":{"44":1}}],["средства",{"2":{"44":1,"53":1}}],["средствами",{"2":{"42":1,"53":1}}],["средство",{"2":{"39":1}}],["среда",{"2":{"40":1}}],["сравнится",{"2":{"55":1}}],["сравниваются",{"2":{"53":1}}],["сравним",{"2":{"11":2}}],["сравнении",{"2":{"7":1}}],["сравнению",{"2":{"6":1}}],["сразу",{"2":{"2":1,"18":1,"19":1,"36":1,"55":2}}],["срок",{"2":{"2":3}}],["сроком",{"2":{"2":1}}],["слабая",{"2":{"46":1}}],["слабо",{"2":{"46":1}}],["слишком",{"2":{"11":1}}],["следит",{"2":{"45":1}}],["следить",{"2":{"45":1}}],["следовательно",{"2":{"8":1}}],["следующей",{"2":{"27":1}}],["следующем",{"2":{"19":1}}],["следующее",{"2":{"19":1,"46":1}}],["следующий",{"2":{"19":1}}],["следующими",{"2":{"28":1}}],["следующим",{"2":{"9":1,"17":1}}],["следующих",{"2":{"7":1}}],["следующие",{"2":{"6":1,"10":1,"11":1}}],["следующую",{"2":{"7":1,"54":1}}],["следует",{"2":{"7":1,"26":1,"43":1}}],["служат",{"2":{"45":1}}],["служит",{"2":{"4":1}}],["слушателей",{"2":{"45":1}}],["случай",{"2":{"34":1,"54":1}}],["случаях",{"2":{"20":1,"43":2}}],["случая",{"2":{"8":1}}],["случаев",{"2":{"2":1,"41":1,"42":1,"55":2}}],["случае",{"2":{"2":3,"3":1,"4":1,"7":2,"8":1,"10":1,"11":1,"26":1,"34":1,"35":1,"39":1,"42":2,"43":1,"45":1}}],["слой",{"2":{"53":1}}],["словами",{"2":{"32":1,"43":1,"55":1}}],["слово",{"2":{"8":1,"11":3,"24":1,"26":1,"74":1}}],["сложно",{"2":{"54":1}}],["сложности",{"2":{"6":1,"11":1,"45":2,"76":1}}],["сложность",{"2":{"1":1}}],["сложным",{"2":{"55":1}}],["сложными",{"2":{"45":1}}],["сложный",{"2":{"43":1}}],["сложные",{"2":{"18":1}}],["сложных",{"2":{"6":1,"53":1}}],["сложная",{"2":{"5":1}}],["сломать",{"2":{"2":1}}],["составителя",{"2":{"76":1}}],["состоять",{"2":{"43":1}}],["состояний",{"2":{"26":1}}],["состояния",{"2":{"18":1,"20":1}}],["состоянием",{"2":{"46":1}}],["состояние",{"2":{"16":2,"20":1,"43":2}}],["состоит",{"2":{"6":1,"9":1,"10":1}}],["сопоставимое",{"2":{"44":1}}],["сопутствующей",{"2":{"43":2}}],["сопутствующие",{"2":{"43":1}}],["сопровождения",{"2":{"26":1}}],["сожалению",{"2":{"40":1,"54":1}}],["сотрудничества",{"2":{"30":1}}],["согласны",{"2":{"26":1}}],["соглашений",{"2":{"21":1,"26":1,"27":1}}],["соглашения",{"0":{"21":1},"1":{"22":1,"23":1,"24":1,"25":1,"26":1},"2":{"26":3,"28":1}}],["соглашение",{"2":{"11":1}}],["сочетании",{"2":{"17":1}}],["сокращения",{"0":{"75":1}}],["сокращение",{"0":{"13":1,"19":1},"2":{"19":1}}],["сокращенный",{"2":{"13":1}}],["содержат",{"2":{"53":1}}],["содержать",{"2":{"9":1,"11":1}}],["содержащая",{"2":{"43":1}}],["содержащий",{"2":{"10":1,"11":1}}],["содержание",{"2":{"28":1}}],["содержимым",{"2":{"20":1}}],["содержимое",{"2":{"8":2,"10":1,"55":1}}],["содержит",{"2":{"4":2,"10":1,"11":1,"13":1}}],["собеседованию",{"2":{"54":1}}],["соберет",{"2":{"8":1}}],["собирает",{"2":{"39":1}}],["собираются",{"2":{"20":1}}],["собрать",{"2":{"39":1}}],["собрано",{"2":{"10":1}}],["соблюдали",{"2":{"26":1}}],["событие",{"2":{"19":4}}],["события",{"0":{"25":1},"2":{"11":1}}],["собственные",{"2":{"12":1,"26":1,"30":1}}],["собственный",{"2":{"10":1}}],["собой",{"2":{"6":2,"7":1,"9":1,"10":1,"40":1}}],["социальными",{"2":{"7":1}}],["солидно",{"2":{"41":1}}],["соли",{"2":{"7":1}}],["совпадении",{"2":{"55":1}}],["совпадают",{"2":{"34":1}}],["совсем",{"2":{"45":1,"55":1}}],["советы",{"0":{"42":1},"2":{"46":1,"64":1}}],["советуется",{"2":{"34":1,"42":1}}],["совет",{"2":{"11":1,"16":1,"26":1,"54":1}}],["совершенно",{"2":{"10":1,"20":1}}],["совместно",{"2":{"11":1}}],["совместное",{"2":{"4":1}}],["совместимости",{"2":{"11":1}}],["современный",{"2":{"38":1,"39":1,"54":1}}],["современные",{"0":{"51":1},"2":{"35":1,"39":1}}],["современным",{"2":{"10":1}}],["современном",{"2":{"9":1}}],["современная",{"2":{"6":1}}],["соединения",{"2":{"5":1}}],["соответствующий",{"2":{"42":1}}],["соответствующую",{"2":{"34":1}}],["соответствующее",{"2":{"17":1}}],["соответствует",{"2":{"7":1,"34":1}}],["соответствии",{"2":{"7":1,"54":1}}],["соответственно",{"2":{"4":1,"53":1,"55":1}}],["сообщение",{"2":{"74":1}}],["сообщений",{"2":{"5":2}}],["сообщения",{"2":{"5":1}}],["создать",{"2":{"36":1,"40":1,"43":1,"46":1}}],["создают",{"2":{"17":1}}],["создаст",{"2":{"11":1}}],["создан",{"2":{"76":1}}],["созданы",{"2":{"55":1}}],["созданном",{"2":{"55":1}}],["созданному",{"2":{"11":1}}],["создана",{"2":{"34":1}}],["создание",{"0":{"39":1},"2":{"39":2,"40":1,"55":1}}],["созданию",{"2":{"11":1}}],["создания",{"2":{"7":4,"8":2,"9":2,"11":1,"20":1,"30":1,"44":1,"45":1}}],["создании",{"2":{"4":1,"7":3}}],["создаем",{"2":{"8":1,"19":1}}],["создается",{"2":{"8":1}}],["создает",{"2":{"2":1,"42":1}}],["создавать",{"2":{"6":2,"12":1,"30":1,"53":1}}],["со",{"2":{"4":2,"11":1,"13":1,"23":1,"34":1,"42":1,"43":1,"55":4}}],["сохранил",{"2":{"34":1}}],["сохранить",{"2":{"2":1,"55":1}}],["сохранения",{"2":{"11":1,"20":1}}],["сохранять",{"2":{"3":1}}],["сохраняется",{"2":{"7":1}}],["сохраняет",{"2":{"2":1,"20":1,"34":1,"39":1}}],["стейты",{"2":{"43":1}}],["стейтом",{"2":{"43":5}}],["стейт",{"2":{"43":2,"45":1}}],["стейта",{"2":{"42":1,"43":3}}],["степени",{"2":{"6":1,"11":1}}],["стиля",{"2":{"75":1}}],["стиль",{"2":{"14":1,"16":1,"26":1,"53":1}}],["стилизованной",{"2":{"53":1}}],["стилизацию",{"2":{"45":1,"48":1}}],["стили",{"2":{"10":2,"53":4}}],["стилей",{"2":{"6":1,"10":2}}],["стилем",{"2":{"6":1}}],["сторе",{"2":{"43":1}}],["сторами",{"2":{"43":1}}],["сторы",{"2":{"43":2,"61":1,"63":1}}],["стор",{"2":{"43":4}}],["сторов",{"2":{"43":1}}],["стором",{"2":{"43":1}}],["стороне",{"2":{"55":2}}],["сторонняя",{"2":{"47":1}}],["сторонней",{"2":{"43":1}}],["стороннего",{"2":{"4":1,"55":1}}],["сторонним",{"2":{"4":3}}],["сторонних",{"0":{"48":1},"2":{"4":1,"5":1}}],["сторонний",{"2":{"2":1}}],["стороны",{"2":{"4":1,"7":1}}],["стоит",{"2":{"28":1}}],["столько",{"2":{"17":1}}],["столкнуться",{"2":{"7":1}}],["стратегий",{"2":{"54":1}}],["страшном",{"2":{"42":1}}],["страдает",{"2":{"11":1}}],["странички",{"2":{"55":1}}],["страницу",{"2":{"9":2,"55":3}}],["страниц",{"2":{"6":2,"53":1}}],["странице",{"2":{"4":1,"6":1,"7":1,"8":2,"17":1,"20":2,"36":1,"44":1}}],["страницы",{"2":{"4":2,"8":2,"9":2,"55":4}}],["страница",{"2":{"4":2,"6":1,"9":1,"10":1,"55":1}}],["страницам",{"2":{"4":3}}],["странным",{"2":{"10":1}}],["странно",{"2":{"9":1}}],["структуре",{"2":{"55":1}}],["структурируя",{"2":{"49":1}}],["структура",{"2":{"7":1}}],["структуры",{"2":{"7":1}}],["структурные",{"2":{"6":1}}],["структурой",{"2":{"6":1}}],["строятся",{"2":{"19":1}}],["строительные",{"2":{"9":1}}],["строгость",{"2":{"5":1}}],["строк",{"2":{"47":1,"55":1}}],["строки",{"2":{"8":1,"11":1,"18":1,"39":1}}],["строками",{"2":{"4":1}}],["строка",{"2":{"4":1}}],["строку",{"2":{"2":1,"4":1,"42":1}}],["стало",{"2":{"43":1,"45":1}}],["стала",{"2":{"43":1}}],["стали",{"2":{"6":1,"42":1,"43":1,"53":1}}],["стадии",{"2":{"20":1}}],["старайтесь",{"2":{"50":1,"54":1}}],["стартапе",{"2":{"44":1}}],["стартового",{"2":{"7":1}}],["старой",{"2":{"34":1}}],["старший",{"2":{"2":1}}],["статей",{"2":{"53":1}}],["статистики",{"2":{"39":1}}],["статичный",{"2":{"55":2}}],["статичным",{"2":{"46":1}}],["статичных",{"2":{"35":1}}],["статичной",{"2":{"6":1}}],["стать",{"2":{"54":1}}],["статьи",{"2":{"5":1,"20":1}}],["статья",{"2":{"4":1,"44":1}}],["статье",{"2":{"2":1,"41":1,"42":1,"53":1}}],["становится",{"2":{"11":1,"43":1}}],["становятся",{"2":{"4":1}}],["станут",{"2":{"11":1}}],["станет",{"2":{"8":1}}],["стандартного",{"2":{"41":1}}],["стандартизации",{"2":{"6":1}}],["стандарты",{"0":{"51":1},"2":{"6":1,"7":1,"53":1}}],["стандарте",{"2":{"4":1}}],["стандартами",{"2":{"6":1,"26":1}}],["стандарта",{"2":{"2":1}}],["стандарт",{"2":{"2":1,"4":1}}],["ставить",{"2":{"2":1}}],["спальни",{"2":{"55":1}}],["спать",{"2":{"55":1}}],["справочную",{"2":{"54":1}}],["справочник",{"2":{"54":1}}],["спрятана",{"2":{"1":1}}],["сперва",{"2":{"38":1,"43":1,"54":1,"55":1}}],["спектр",{"2":{"30":1}}],["спецификаций",{"2":{"55":1}}],["спецификации",{"2":{"7":1}}],["специфичное",{"2":{"5":1}}],["специальную",{"2":{"12":1}}],["специальный",{"2":{"20":1}}],["специальные",{"2":{"12":1}}],["специальных",{"2":{"4":1}}],["специального",{"2":{"5":1}}],["специализированным",{"2":{"4":1}}],["списка",{"2":{"20":1}}],["списков",{"2":{"16":1}}],["список",{"2":{"4":2,"11":1,"19":1}}],["способа",{"2":{"55":1}}],["способе",{"2":{"11":1}}],["способом",{"2":{"8":1,"10":1}}],["способ",{"2":{"2":1,"11":3,"34":2,"39":1,"55":1}}],["сайтов",{"2":{"55":1}}],["сайтом",{"2":{"54":1,"75":1}}],["сайты",{"2":{"3":1}}],["сайт",{"2":{"2":1,"32":1,"34":1,"35":4,"46":1,"54":2,"55":2}}],["сайту",{"2":{"2":1,"35":2}}],["сайте",{"2":{"2":1,"3":1,"39":1,"42":1,"43":1,"55":1}}],["сайтами",{"2":{"55":1}}],["сайта",{"2":{"2":4,"34":2,"42":1,"44":1,"45":1,"46":1,"55":3}}],["самая",{"2":{"46":1}}],["самим",{"2":{"55":1}}],["сами",{"2":{"35":1,"39":1,"54":1}}],["самые",{"2":{"39":1,"45":1}}],["самых",{"2":{"30":2}}],["самым",{"2":{"7":1,"10":1,"18":1,"43":1,"55":1}}],["самый",{"2":{"2":1,"34":1,"44":1,"54":1}}],["сам",{"2":{"7":1,"42":1,"43":2,"49":1}}],["самоучитель",{"2":{"54":1}}],["самописный",{"2":{"53":1}}],["самой",{"2":{"44":1,"55":1}}],["самостоятельно",{"2":{"35":2}}],["самостоятельный",{"2":{"3":1}}],["самого",{"2":{"21":1,"34":1}}],["самому",{"2":{"45":1,"53":1}}],["самом",{"2":{"7":1,"26":1,"42":1}}],["самое",{"2":{"2":2,"40":1,"45":1,"48":1}}],["с",{"0":{"0":1},"1":{"1":1},"2":{"1":3,"2":13,"3":10,"4":3,"5":4,"6":4,"7":9,"8":4,"9":3,"10":8,"11":5,"12":1,"16":2,"17":1,"18":1,"19":4,"20":1,"21":1,"23":2,"24":1,"26":1,"27":1,"30":9,"34":4,"35":4,"36":3,"38":1,"39":3,"40":4,"41":1,"42":3,"43":9,"44":4,"45":3,"46":7,"47":1,"48":1,"50":1,"54":10,"55":11,"58":1,"75":3}}]],"serializationVersion":2}';export{e as default}; diff --git a/assets/chunks/VPLocalSearchBox.a8ac6602.js b/assets/chunks/VPLocalSearchBox.de88e89c.js similarity index 99% rename from assets/chunks/VPLocalSearchBox.a8ac6602.js rename to assets/chunks/VPLocalSearchBox.de88e89c.js index 2a0240424..43b38b6de 100644 --- a/assets/chunks/VPLocalSearchBox.a8ac6602.js +++ b/assets/chunks/VPLocalSearchBox.de88e89c.js @@ -1,4 +1,4 @@ -import{V as ze,h as ne,x as Be,ah as Nt,ai as Tt,d as kt,E as ge,aj as et,g as ke,ak as It,al as Dt,y as _t,am as Ot,j as Ie,O as fe,S as be,an as Rt,ao as Mt,W as Lt,s as Pt,ap as zt,o as Z,b as Bt,k as S,$ as Vt,l as W,a1 as $t,a2 as Wt,aq as Kt,c as ee,n as tt,e as we,D as rt,F as at,a as de,t as he,ar as jt,p as Jt,m as Ut,as as nt,at as Ht,a6 as Gt,ac as qt,_ as Qt}from"./framework.477046d0.js";import{u as Yt,c as Zt}from"./theme.46cffbb1.js";const Xt={root:()=>ze(()=>import("./@localSearchIndexroot.b272063a.js"),[]),en:()=>ze(()=>import("./@localSearchIndexen.ab12eb82.js"),[])};/*! +import{V as ze,h as ne,x as Be,ah as Nt,ai as Tt,d as kt,E as ge,aj as et,g as ke,ak as It,al as Dt,y as _t,am as Ot,j as Ie,O as fe,S as be,an as Rt,ao as Mt,W as Lt,s as Pt,ap as zt,o as Z,b as Bt,k as S,$ as Vt,l as W,a1 as $t,a2 as Wt,aq as Kt,c as ee,n as tt,e as we,D as rt,F as at,a as de,t as he,ar as jt,p as Jt,m as Ut,as as nt,at as Ht,a6 as Gt,ac as qt,_ as Qt}from"./framework.477046d0.js";import{u as Yt,c as Zt}from"./theme.88e180d0.js";const Xt={root:()=>ze(()=>import("./@localSearchIndexroot.82b40a0d.js"),[]),en:()=>ze(()=>import("./@localSearchIndexen.ab12eb82.js"),[])};/*! * tabbable 6.2.0 * @license MIT, https://github.com/focus-trap/tabbable/blob/master/LICENSE */var pt=["input:not([inert])","select:not([inert])","textarea:not([inert])","a[href]:not([inert])","button:not([inert])","[tabindex]:not(slot):not([inert])","audio[controls]:not([inert])","video[controls]:not([inert])",'[contenteditable]:not([contenteditable="false"]):not([inert])',"details>summary:first-of-type:not([inert])","details:not([inert])"],Ee=pt.join(","),yt=typeof Element>"u",oe=yt?function(){}:Element.prototype.matches||Element.prototype.msMatchesSelector||Element.prototype.webkitMatchesSelector,Se=!yt&&Element.prototype.getRootNode?function(o){var e;return o==null||(e=o.getRootNode)===null||e===void 0?void 0:e.call(o)}:function(o){return o==null?void 0:o.ownerDocument},Ae=function o(e,t){var r;t===void 0&&(t=!0);var n=e==null||(r=e.getAttribute)===null||r===void 0?void 0:r.call(e,"inert"),a=n===""||n==="true",i=a||t&&e&&o(e.parentNode);return i},er=function(e){var t,r=e==null||(t=e.getAttribute)===null||t===void 0?void 0:t.call(e,"contenteditable");return r===""||r==="true"},mt=function(e,t,r){if(Ae(e))return[];var n=Array.prototype.slice.apply(e.querySelectorAll(Ee));return t&&oe.call(e,Ee)&&n.unshift(e),n=n.filter(r),n},gt=function o(e,t,r){for(var n=[],a=Array.from(e);a.length;){var i=a.shift();if(!Ae(i,!1))if(i.tagName==="SLOT"){var s=i.assignedElements(),u=s.length?s:i.children,l=o(u,!0,r);r.flatten?n.push.apply(n,l):n.push({scopeParent:i,candidates:l})}else{var h=oe.call(i,Ee);h&&r.filter(i)&&(t||!e.includes(i))&&n.push(i);var d=i.shadowRoot||typeof r.getShadowRoot=="function"&&r.getShadowRoot(i),v=!Ae(d,!1)&&(!r.shadowRootFilter||r.shadowRootFilter(i));if(d&&v){var y=o(d===!0?i.children:d.children,!0,r);r.flatten?n.push.apply(n,y):n.push({scopeParent:i,candidates:y})}else a.unshift.apply(a,i.children)}}return n},bt=function(e){return!isNaN(parseInt(e.getAttribute("tabindex"),10))},ie=function(e){if(!e)throw new Error("No node provided");return e.tabIndex<0&&(/^(AUDIO|VIDEO|DETAILS)$/.test(e.tagName)||er(e))&&!bt(e)?0:e.tabIndex},tr=function(e,t){var r=ie(e);return r<0&&t&&!bt(e)?0:r},rr=function(e,t){return e.tabIndex===t.tabIndex?e.documentOrder-t.documentOrder:e.tabIndex-t.tabIndex},wt=function(e){return e.tagName==="INPUT"},ar=function(e){return wt(e)&&e.type==="hidden"},nr=function(e){var t=e.tagName==="DETAILS"&&Array.prototype.slice.apply(e.children).some(function(r){return r.tagName==="SUMMARY"});return t},ir=function(e,t){for(var r=0;rsummary:first-of-type"),i=a?e.parentElement:e;if(oe.call(i,"details:not([open]) *"))return!0;if(!r||r==="full"||r==="legacy-full"){if(typeof n=="function"){for(var s=e;e;){var u=e.parentElement,l=Se(e);if(u&&!u.shadowRoot&&n(u)===!0)return it(e);e.assignedSlot?e=e.assignedSlot:!u&&l!==e.ownerDocument?e=l.host:e=u}e=s}if(lr(e))return!e.getClientRects().length;if(r!=="legacy-full")return!0}else if(r==="non-zero-area")return it(e);return!1},fr=function(e){if(/^(INPUT|BUTTON|SELECT|TEXTAREA)$/.test(e.tagName))for(var t=e.parentElement;t;){if(t.tagName==="FIELDSET"&&t.disabled){for(var r=0;r=0)},hr=function o(e){var t=[],r=[];return e.forEach(function(n,a){var i=!!n.scopeParent,s=i?n.scopeParent:n,u=tr(s,i),l=i?o(n.candidates):s;u===0?i?t.push.apply(t,l):t.push(s):r.push({documentOrder:a,tabIndex:u,item:n,isScope:i,content:l})}),r.sort(rr).reduce(function(n,a){return a.isScope?n.push.apply(n,a.content):n.push(a.content),n},[]).concat(t)},vr=function(e,t){t=t||{};var r;return t.getShadowRoot?r=gt([e],t.includeContainer,{filter:Ve.bind(null,t),flatten:!1,getShadowRoot:t.getShadowRoot,shadowRootFilter:dr}):r=mt(e,t.includeContainer,Ve.bind(null,t)),hr(r)},pr=function(e,t){t=t||{};var r;return t.getShadowRoot?r=gt([e],t.includeContainer,{filter:Ce.bind(null,t),flatten:!0,getShadowRoot:t.getShadowRoot}):r=mt(e,t.includeContainer,Ce.bind(null,t)),r},se=function(e,t){if(t=t||{},!e)throw new Error("No node provided");return oe.call(e,Ee)===!1?!1:Ve(t,e)},yr=pt.concat("iframe").join(","),De=function(e,t){if(t=t||{},!e)throw new Error("No node provided");return oe.call(e,yr)===!1?!1:Ce(t,e)};/*! diff --git a/assets/chunks/theme.46cffbb1.js b/assets/chunks/theme.88e180d0.js similarity index 99% rename from assets/chunks/theme.46cffbb1.js rename to assets/chunks/theme.88e180d0.js index 13f792c44..ae4879273 100644 --- a/assets/chunks/theme.46cffbb1.js +++ b/assets/chunks/theme.88e180d0.js @@ -1 +1 @@ -import{d as g,o as a,c as i,r as u,n as C,a as x,t as L,_ as m,b as $,w as v,T as ce,e as f,u as De,i as Ee,f as ue,g as P,h as I,j as K,k as c,l as r,p as H,m as z,q as j,s as W,v as le,x as q,y as te,z as de,A as we,B as Fe,C as R,F as T,D as A,E as _e,G as Y,H as h,I as U,J as Le,K as se,L as Z,M as ne,N as Oe,O as Ge,P as Se,Q as Ue,R as je,S as ye,U as Ke,V as qe,W as Me,X as Ne,Y as Re,Z as We,$ as Ye,a0 as Je}from"./framework.477046d0.js";const Xe=g({__name:"VPBadge",props:{text:{},type:{default:"tip"}},setup(s){return(e,t)=>(a(),i("span",{class:C(["VPBadge",e.type])},[u(e.$slots,"default",{},()=>[x(L(e.text),1)],!0)],2))}});const Ze=m(Xe,[["__scopeId","data-v-394e4c62"]]),Qe={key:0,class:"VPBackdrop"},et=g({__name:"VPBackdrop",props:{show:{type:Boolean}},setup(s){return(e,t)=>(a(),$(ce,{name:"fade"},{default:v(()=>[e.show?(a(),i("div",Qe)):f("",!0)]),_:1}))}});const tt=m(et,[["__scopeId","data-v-da587472"]]),V=De;function st(s,e){let t,n=!1;return()=>{t&&clearTimeout(t),n?t=setTimeout(s,e):(s(),(n=!0)&&setTimeout(()=>n=!1,e))}}function re(s){return/^\//.test(s)?s:`/${s}`}function J(s){if(Ee(s))return s;const{site:e}=V(),{pathname:t,search:n,hash:o}=new URL(s,"http://a.com"),l=t.endsWith("/")||t.endsWith(".html")?s:s.replace(/(?:(^\.+)\/)?.*$/,`$1${t.replace(/(\.md)?$/,e.value.cleanUrls?"":".html")}${n}${o}`);return ue(l)}function X({removeCurrent:s=!0,correspondingLink:e=!1}={}){const{site:t,localeIndex:n,page:o,theme:l}=V(),d=P(()=>{var _,b;return{label:(_=t.value.locales[n.value])==null?void 0:_.label,link:((b=t.value.locales[n.value])==null?void 0:b.link)||(n.value==="root"?"/":`/${n.value}/`)}});return{localeLinks:P(()=>Object.entries(t.value.locales).flatMap(([_,b])=>s&&d.value.label===b.label?[]:{text:b.label,link:nt(b.link||(_==="root"?"/":`/${_}/`),l.value.i18nRouting!==!1&&e,o.value.relativePath.slice(d.value.link.length-1),!t.value.cleanUrls)})),currentLang:d}}function nt(s,e,t,n){return e?s.replace(/\/$/,"")+re(t.replace(/(^|\/)index\.md$/,"$1").replace(/\.md$/,n?".html":"")):s}const ot=s=>(H("data-v-f8580bb4"),s=s(),z(),s),at={class:"NotFound"},lt={class:"code"},rt={class:"title"},it=ot(()=>c("div",{class:"divider"},null,-1)),ct={class:"quote"},ut={class:"action"},dt=["href","aria-label"],_t=g({__name:"NotFound",setup(s){const{site:e,theme:t}=V(),{localeLinks:n}=X({removeCurrent:!1}),o=I("/");return K(()=>{var d;const l=window.location.pathname.replace(e.value.base,"").replace(/(^.*?\/).*$/,"/$1");n.value.length&&(o.value=((d=n.value.find(({link:p})=>p.startsWith(l)))==null?void 0:d.link)||n.value[0].link)}),(l,d)=>{var p,_,b,w,S;return a(),i("div",at,[c("p",lt,L(((p=r(t).notFound)==null?void 0:p.code)??"404"),1),c("h1",rt,L(((_=r(t).notFound)==null?void 0:_.title)??"PAGE NOT FOUND"),1),it,c("blockquote",ct,L(((b=r(t).notFound)==null?void 0:b.quote)??"But if you don't change your direction, and if you keep looking, you may end up where you are heading."),1),c("div",ut,[c("a",{class:"link",href:r(ue)(o.value),"aria-label":((w=r(t).notFound)==null?void 0:w.linkLabel)??"go to home"},L(((S=r(t).notFound)==null?void 0:S.linkText)??"Take me home"),9,dt)])])}}});const vt=m(_t,[["__scopeId","data-v-f8580bb4"]]);function Ie(s,e){if(Array.isArray(s))return Q(s);if(s==null)return[];e=re(e);const t=Object.keys(s).sort((o,l)=>l.split("/").length-o.split("/").length).find(o=>e.startsWith(re(o))),n=t?s[t]:[];return Array.isArray(n)?Q(n):Q(n.items,n.base)}function pt(s){const e=[];let t=0;for(const n in s){const o=s[n];if(o.items){t=e.push(o);continue}e[t]||e.push({items:[]}),e[t].items.push(o)}return e}function ht(s){const e=[];function t(n){for(const o of n)o.text&&o.link&&e.push({text:o.text,link:o.link,docFooterText:o.docFooterText}),o.items&&t(o.items)}return t(s),e}function ie(s,e){return Array.isArray(e)?e.some(t=>ie(s,t)):j(s,e.link)?!0:e.items?ie(s,e.items):!1}function Q(s,e){return[...s].map(t=>{const n={...t},o=n.base||e;return o&&n.link&&(n.link=o+n.link),n.items&&(n.items=Q(n.items,o)),n})}function F(){const{frontmatter:s,page:e,theme:t}=V(),n=le("(min-width: 960px)"),o=I(!1),l=P(()=>{const N=t.value.sidebar,y=e.value.relativePath;return N?Ie(N,y):[]}),d=I(l.value);q(l,(N,y)=>{JSON.stringify(N)!==JSON.stringify(y)&&(d.value=l.value)});const p=P(()=>s.value.sidebar!==!1&&d.value.length>0&&s.value.layout!=="home"),_=P(()=>b?s.value.aside==null?t.value.aside==="left":s.value.aside==="left":!1),b=P(()=>s.value.layout==="home"?!1:s.value.aside!=null?!!s.value.aside:t.value.aside!==!1),w=P(()=>p.value&&n.value),S=P(()=>p.value?pt(d.value):[]);function B(){o.value=!0}function k(){o.value=!1}function M(){o.value?k():B()}return{isOpen:o,sidebar:d,sidebarGroups:S,hasSidebar:p,hasAside:b,leftAside:_,isSidebarEnabled:w,open:B,close:k,toggle:M}}function ft(s,e){let t;te(()=>{t=s.value?document.activeElement:void 0}),K(()=>{window.addEventListener("keyup",n)}),de(()=>{window.removeEventListener("keyup",n)});function n(o){o.key==="Escape"&&s.value&&(e(),t==null||t.focus())}}const Te=I(W?location.hash:"");W&&window.addEventListener("hashchange",()=>{Te.value=location.hash});function mt(s){const{page:e}=V(),t=I(!1),n=P(()=>s.value.collapsed!=null),o=P(()=>!!s.value.link),l=I(!1),d=()=>{l.value=j(e.value.relativePath,s.value.link)};q([e,s,Te],d),K(d);const p=P(()=>l.value?!0:s.value.items?ie(e.value.relativePath,s.value.items):!1),_=P(()=>!!(s.value.items&&s.value.items.length));te(()=>{t.value=!!(n.value&&s.value.collapsed)}),we(()=>{(l.value||p.value)&&(t.value=!1)});function b(){n.value&&(t.value=!t.value)}return{collapsed:t,collapsible:n,isLink:o,isActiveLink:l,hasActiveLink:p,hasChildren:_,toggle:b}}function gt(){const{hasSidebar:s}=F(),e=le("(min-width: 960px)"),t=le("(min-width: 1280px)");return{isAsideEnabled:P(()=>!t.value&&!e.value?!1:s.value?t.value:e.value)}}const bt=71;function ve(s){return typeof s.outline=="object"&&!Array.isArray(s.outline)&&s.outline.label||s.outlineTitle||"On this page"}function pe(s){const e=[...document.querySelectorAll(".VPDoc :where(h1,h2,h3,h4,h5,h6)")].filter(t=>t.id&&t.hasChildNodes()).map(t=>{const n=Number(t.tagName[1]);return{title:$t(t),link:"#"+t.id,level:n}});return kt(e,s)}function $t(s){let e="";for(const t of s.childNodes)if(t.nodeType===1){if(t.classList.contains("VPBadge")||t.classList.contains("header-anchor"))continue;e+=t.textContent}else t.nodeType===3&&(e+=t.textContent);return e.trim()}function kt(s,e){if(e===!1)return[];const t=(typeof e=="object"&&!Array.isArray(e)?e.level:e)||2,[n,o]=typeof t=="number"?[t,t]:t==="deep"?[2,6]:t;s=s.filter(d=>d.level>=n&&d.level<=o);const l=[];e:for(let d=0;d=0;_--){const b=s[_];if(b.level{requestAnimationFrame(l),window.addEventListener("scroll",n)}),Fe(()=>{d(location.hash)}),de(()=>{window.removeEventListener("scroll",n)});function l(){if(!t.value)return;const p=[].slice.call(s.value.querySelectorAll(".outline-link")),_=[].slice.call(document.querySelectorAll(".content .header-anchor")).filter(k=>p.some(M=>M.hash===k.hash&&k.offsetParent!==null)),b=window.scrollY,w=window.innerHeight,S=document.body.offsetHeight,B=Math.abs(b+w-S)<1;if(_.length&&B){d(_[_.length-1].hash);return}for(let k=0;k<_.length;k++){const M=_[k],N=_[k+1],[y,D]=Pt(k,M,N);if(y){d(D);return}}}function d(p){o&&o.classList.remove("active"),p==null?o=null:o=s.value.querySelector(`a[href="${decodeURIComponent(p)}"]`);const _=o;_?(_.classList.add("active"),e.value.style.top=_.offsetTop+33+"px",e.value.style.opacity="1"):(e.value.style.top="33px",e.value.style.opacity="0")}}function Pe(s){return s.parentElement.offsetTop-bt}function Pt(s,e,t){const n=window.scrollY;return s===0&&n===0?[!0,null]:n{const o=R("VPDocOutlineItem",!0);return a(),i("ul",{class:C(t.root?"root":"nested")},[(a(!0),i(T,null,A(t.headers,({children:l,link:d,title:p})=>(a(),i("li",null,[c("a",{class:"outline-link",href:d,onClick:e,title:p},L(p),9,Vt),l!=null&&l.length?(a(),$(o,{key:0,headers:l},null,8,["headers"])):f("",!0)]))),256))],2)}}});const he=m(wt,[["__scopeId","data-v-c043bf3a"]]),Lt=s=>(H("data-v-832577d7"),s=s(),z(),s),St={class:"content"},Mt={class:"outline-title",role:"heading","aria-level":"2"},Nt={"aria-labelledby":"doc-outline-aria-label"},It=Lt(()=>c("span",{class:"visually-hidden",id:"doc-outline-aria-label"}," Table of Contents for current page ",-1)),Tt=g({__name:"VPDocAsideOutline",setup(s){const{frontmatter:e,theme:t}=V(),n=_e([]);Y(()=>{n.value=pe(e.value.outline??t.value.outline)});const o=I(),l=I();return yt(o,l),(d,p)=>(a(),i("div",{class:C(["VPDocAsideOutline",{"has-outline":n.value.length>0}]),ref_key:"container",ref:o,role:"navigation"},[c("div",St,[c("div",{class:"outline-marker",ref_key:"marker",ref:l},null,512),c("div",Mt,L(r(ve)(r(t))),1),c("nav",Nt,[It,h(he,{headers:n.value,root:!0},null,8,["headers"])])])],2))}});const Ct=m(Tt,[["__scopeId","data-v-832577d7"]]),Bt={class:"VPDocAsideCarbonAds"},At=g({__name:"VPDocAsideCarbonAds",props:{carbonAds:{}},setup(s){const e=()=>null;return(t,n)=>(a(),i("div",Bt,[h(r(e),{"carbon-ads":t.carbonAds},null,8,["carbon-ads"])]))}}),xt=s=>(H("data-v-59f2eefd"),s=s(),z(),s),Ht={class:"VPDocAside"},zt=xt(()=>c("div",{class:"spacer"},null,-1)),Dt=g({__name:"VPDocAside",setup(s){const{theme:e}=V();return(t,n)=>(a(),i("div",Ht,[u(t.$slots,"aside-top",{},void 0,!0),u(t.$slots,"aside-outline-before",{},void 0,!0),h(Ct),u(t.$slots,"aside-outline-after",{},void 0,!0),zt,u(t.$slots,"aside-ads-before",{},void 0,!0),r(e).carbonAds?(a(),$(At,{key:0,"carbon-ads":r(e).carbonAds},null,8,["carbon-ads"])):f("",!0),u(t.$slots,"aside-ads-after",{},void 0,!0),u(t.$slots,"aside-bottom",{},void 0,!0)]))}});const Et=m(Dt,[["__scopeId","data-v-59f2eefd"]]);function Ft(){const{theme:s,page:e}=V();return P(()=>{const{text:t="Edit this page",pattern:n=""}=s.value.editLink||{};let o;return typeof n=="function"?o=n(e.value):o=n.replace(/:path/g,e.value.filePath),{url:o,text:t}})}function Ot(){const{page:s,theme:e,frontmatter:t}=V();return P(()=>{var _,b,w,S,B,k,M,N;const n=Ie(e.value.sidebar,s.value.relativePath),o=ht(n),l=o.findIndex(y=>j(s.value.relativePath,y.link)),d=((_=e.value.docFooter)==null?void 0:_.prev)===!1&&!t.value.prev||t.value.prev===!1,p=((b=e.value.docFooter)==null?void 0:b.next)===!1&&!t.value.next||t.value.next===!1;return{prev:d?void 0:{text:(typeof t.value.prev=="string"?t.value.prev:typeof t.value.prev=="object"?t.value.prev.text:void 0)??((w=o[l-1])==null?void 0:w.docFooterText)??((S=o[l-1])==null?void 0:S.text),link:(typeof t.value.prev=="object"?t.value.prev.link:void 0)??((B=o[l-1])==null?void 0:B.link)},next:p?void 0:{text:(typeof t.value.next=="string"?t.value.next:typeof t.value.next=="object"?t.value.next.text:void 0)??((k=o[l+1])==null?void 0:k.docFooterText)??((M=o[l+1])==null?void 0:M.text),link:(typeof t.value.next=="object"?t.value.next.link:void 0)??((N=o[l+1])==null?void 0:N.link)}}})}const Gt={},Ut={xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},jt=c("path",{d:"M18,23H4c-1.7,0-3-1.3-3-3V6c0-1.7,1.3-3,3-3h7c0.6,0,1,0.4,1,1s-0.4,1-1,1H4C3.4,5,3,5.4,3,6v14c0,0.6,0.4,1,1,1h14c0.6,0,1-0.4,1-1v-7c0-0.6,0.4-1,1-1s1,0.4,1,1v7C21,21.7,19.7,23,18,23z"},null,-1),Kt=c("path",{d:"M8,17c-0.3,0-0.5-0.1-0.7-0.3C7,16.5,6.9,16.1,7,15.8l1-4c0-0.2,0.1-0.3,0.3-0.5l9.5-9.5c1.2-1.2,3.2-1.2,4.4,0c1.2,1.2,1.2,3.2,0,4.4l-9.5,9.5c-0.1,0.1-0.3,0.2-0.5,0.3l-4,1C8.2,17,8.1,17,8,17zM9.9,12.5l-0.5,2.1l2.1-0.5l9.3-9.3c0.4-0.4,0.4-1.1,0-1.6c-0.4-0.4-1.2-0.4-1.6,0l0,0L9.9,12.5z M18.5,2.5L18.5,2.5L18.5,2.5z"},null,-1),qt=[jt,Kt];function Rt(s,e){return a(),i("svg",Ut,qt)}const Wt=m(Gt,[["render",Rt]]),G=g({__name:"VPLink",props:{tag:{},href:{},noIcon:{type:Boolean},target:{},rel:{}},setup(s){const e=s,t=P(()=>e.tag??(e.href?"a":"span")),n=P(()=>e.href&&Le.test(e.href));return(o,l)=>(a(),$(U(t.value),{class:C(["VPLink",{link:o.href,"vp-external-link-icon":n.value,"no-icon":o.noIcon}]),href:o.href?r(J)(o.href):void 0,target:o.target??(n.value?"_blank":void 0),rel:o.rel??(n.value?"noreferrer":void 0)},{default:v(()=>[u(o.$slots,"default")]),_:3},8,["class","href","target","rel"]))}}),Yt={class:"VPLastUpdated"},Jt=["datetime"],Xt=g({__name:"VPDocFooterLastUpdated",setup(s){const{theme:e,page:t,frontmatter:n,lang:o}=V(),l=P(()=>new Date(n.value.lastUpdated??t.value.lastUpdated)),d=P(()=>l.value.toISOString()),p=I("");return K(()=>{te(()=>{var _,b,w;p.value=new Intl.DateTimeFormat((b=(_=e.value.lastUpdated)==null?void 0:_.formatOptions)!=null&&b.forceLocale?o.value:void 0,((w=e.value.lastUpdated)==null?void 0:w.formatOptions)??{dateStyle:"short",timeStyle:"short"}).format(l.value)})}),(_,b)=>{var w;return a(),i("p",Yt,[x(L(((w=r(e).lastUpdated)==null?void 0:w.text)||r(e).lastUpdatedText||"Last updated")+": ",1),c("time",{datetime:d.value},L(p.value),9,Jt)])}}});const Zt=m(Xt,[["__scopeId","data-v-82edb21a"]]),Qt={key:0,class:"VPDocFooter"},es={key:0,class:"edit-info"},ts={key:0,class:"edit-link"},ss={key:1,class:"last-updated"},ns={key:1,class:"prev-next"},os={class:"pager"},as=["href"],ls=["innerHTML"],rs=["innerHTML"],is={class:"pager"},cs=["href"],us=["innerHTML"],ds=["innerHTML"],_s=g({__name:"VPDocFooter",setup(s){const{theme:e,page:t,frontmatter:n}=V(),o=Ft(),l=Ot(),d=P(()=>e.value.editLink&&n.value.editLink!==!1),p=P(()=>t.value.lastUpdated&&n.value.lastUpdated!==!1),_=P(()=>d.value||p.value||l.value.prev||l.value.next);return(b,w)=>{var S,B,k,M,N,y;return _.value?(a(),i("footer",Qt,[u(b.$slots,"doc-footer-before",{},void 0,!0),d.value||p.value?(a(),i("div",es,[d.value?(a(),i("div",ts,[h(G,{class:"edit-link-button",href:r(o).url,"no-icon":!0},{default:v(()=>[h(Wt,{class:"edit-link-icon","aria-label":"edit icon"}),x(" "+L(r(o).text),1)]),_:1},8,["href"])])):f("",!0),p.value?(a(),i("div",ss,[h(Zt)])):f("",!0)])):f("",!0),(S=r(l).prev)!=null&&S.link||(B=r(l).next)!=null&&B.link?(a(),i("nav",ns,[c("div",os,[(k=r(l).prev)!=null&&k.link?(a(),i("a",{key:0,class:"pager-link prev",href:r(J)(r(l).prev.link)},[c("span",{class:"desc",innerHTML:((M=r(e).docFooter)==null?void 0:M.prev)||"Previous page"},null,8,ls),c("span",{class:"title",innerHTML:r(l).prev.text},null,8,rs)],8,as)):f("",!0)]),c("div",is,[(N=r(l).next)!=null&&N.link?(a(),i("a",{key:0,class:"pager-link next",href:r(J)(r(l).next.link)},[c("span",{class:"desc",innerHTML:((y=r(e).docFooter)==null?void 0:y.next)||"Next page"},null,8,us),c("span",{class:"title",innerHTML:r(l).next.text},null,8,ds)],8,cs)):f("",!0)])])):f("",!0)])):f("",!0)}}});const vs=m(_s,[["__scopeId","data-v-93d7bb42"]]),ps={},hs={xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false",viewBox:"0 0 24 24"},fs=c("path",{d:"M9,19c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l5.3-5.3L8.3,6.7c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l6,6c0.4,0.4,0.4,1,0,1.4l-6,6C9.5,18.9,9.3,19,9,19z"},null,-1),ms=[fs];function gs(s,e){return a(),i("svg",hs,ms)}const fe=m(ps,[["render",gs]]),bs={key:0,class:"VPDocOutlineDropdown"},$s={key:0,class:"items"},ks=g({__name:"VPDocOutlineDropdown",setup(s){const{frontmatter:e,theme:t}=V(),n=I(!1);Y(()=>{n.value=!1});const o=_e([]);return Y(()=>{o.value=pe(e.value.outline??t.value.outline)}),(l,d)=>o.value.length>0?(a(),i("div",bs,[c("button",{onClick:d[0]||(d[0]=p=>n.value=!n.value),class:C({open:n.value})},[x(L(r(ve)(r(t)))+" ",1),h(fe,{class:"icon"})],2),n.value?(a(),i("div",$s,[h(he,{headers:o.value},null,8,["headers"])])):f("",!0)])):f("",!0)}});const ys=m(ks,[["__scopeId","data-v-29293128"]]),Ps=s=>(H("data-v-0484986b"),s=s(),z(),s),Vs={class:"container"},ws=Ps(()=>c("div",{class:"aside-curtain"},null,-1)),Ls={class:"aside-container"},Ss={class:"aside-content"},Ms={class:"content"},Ns={class:"content-container"},Is={class:"main"},Ts=g({__name:"VPDoc",setup(s){const{theme:e}=V(),t=se(),{hasSidebar:n,hasAside:o,leftAside:l}=F(),d=P(()=>t.path.replace(/[./]+/g,"_").replace(/_html$/,""));return(p,_)=>{const b=R("Content");return a(),i("div",{class:C(["VPDoc",{"has-sidebar":r(n),"has-aside":r(o)}])},[u(p.$slots,"doc-top",{},void 0,!0),c("div",Vs,[r(o)?(a(),i("div",{key:0,class:C(["aside",{"left-aside":r(l)}])},[ws,c("div",Ls,[c("div",Ss,[h(Et,null,{"aside-top":v(()=>[u(p.$slots,"aside-top",{},void 0,!0)]),"aside-bottom":v(()=>[u(p.$slots,"aside-bottom",{},void 0,!0)]),"aside-outline-before":v(()=>[u(p.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":v(()=>[u(p.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":v(()=>[u(p.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":v(()=>[u(p.$slots,"aside-ads-after",{},void 0,!0)]),_:3})])])],2)):f("",!0),c("div",Ms,[c("div",Ns,[u(p.$slots,"doc-before",{},void 0,!0),h(ys),c("main",Is,[h(b,{class:C(["vp-doc",[d.value,r(e).externalLinkIcon&&"external-link-icon-enabled"]])},null,8,["class"])]),h(vs,null,{"doc-footer-before":v(()=>[u(p.$slots,"doc-footer-before",{},void 0,!0)]),_:3}),u(p.$slots,"doc-after",{},void 0,!0)])])]),u(p.$slots,"doc-bottom",{},void 0,!0)],2)}}});const Cs=m(Ts,[["__scopeId","data-v-0484986b"]]),Bs=g({__name:"VPButton",props:{tag:{},size:{default:"medium"},theme:{default:"brand"},text:{},href:{}},setup(s){const e=s,t=P(()=>e.href&&Le.test(e.href)),n=P(()=>e.tag||e.href?"a":"button");return(o,l)=>(a(),$(U(n.value),{class:C(["VPButton",[o.size,o.theme]]),href:o.href?r(J)(o.href):void 0,target:t.value?"_blank":void 0,rel:t.value?"noreferrer":void 0},{default:v(()=>[x(L(o.text),1)]),_:1},8,["class","href","target","rel"]))}});const As=m(Bs,[["__scopeId","data-v-ccb90d73"]]),xs=["src","alt"],Hs=g({inheritAttrs:!1,__name:"VPImage",props:{image:{},alt:{}},setup(s){return(e,t)=>{const n=R("VPImage",!0);return e.image?(a(),i(T,{key:0},[typeof e.image=="string"||"src"in e.image?(a(),i("img",Z({key:0,class:"VPImage"},typeof e.image=="string"?e.$attrs:{...e.image,...e.$attrs},{src:r(ue)(typeof e.image=="string"?e.image:e.image.src),alt:e.alt??(typeof e.image=="string"?"":e.image.alt||"")}),null,16,xs)):(a(),i(T,{key:1},[h(n,Z({class:"dark",image:e.image.dark,alt:e.image.alt},e.$attrs),null,16,["image","alt"]),h(n,Z({class:"light",image:e.image.light,alt:e.image.alt},e.$attrs),null,16,["image","alt"])],64))],64)):f("",!0)}}});const ee=m(Hs,[["__scopeId","data-v-1a473120"]]),zs=s=>(H("data-v-9f4ba9bd"),s=s(),z(),s),Ds={class:"container"},Es={class:"main"},Fs={key:0,class:"name"},Os=["innerHTML"],Gs=["innerHTML"],Us=["innerHTML"],js={key:0,class:"actions"},Ks={key:0,class:"image"},qs={class:"image-container"},Rs=zs(()=>c("div",{class:"image-bg"},null,-1)),Ws=g({__name:"VPHero",props:{name:{},text:{},tagline:{},image:{},actions:{}},setup(s){const e=ne("hero-image-slot-exists");return(t,n)=>(a(),i("div",{class:C(["VPHero",{"has-image":t.image||r(e)}])},[c("div",Ds,[c("div",Es,[u(t.$slots,"home-hero-info",{},()=>[t.name?(a(),i("h1",Fs,[c("span",{innerHTML:t.name,class:"clip"},null,8,Os)])):f("",!0),t.text?(a(),i("p",{key:1,innerHTML:t.text,class:"text"},null,8,Gs)):f("",!0),t.tagline?(a(),i("p",{key:2,innerHTML:t.tagline,class:"tagline"},null,8,Us)):f("",!0)],!0),t.actions?(a(),i("div",js,[(a(!0),i(T,null,A(t.actions,o=>(a(),i("div",{key:o.link,class:"action"},[h(As,{tag:"a",size:"medium",theme:o.theme,text:o.text,href:o.link},null,8,["theme","text","href"])]))),128))])):f("",!0)]),t.image||r(e)?(a(),i("div",Ks,[c("div",qs,[Rs,u(t.$slots,"home-hero-image",{},()=>[t.image?(a(),$(ee,{key:0,class:"image-src",image:t.image},null,8,["image"])):f("",!0)],!0)])])):f("",!0)])],2))}});const Ys=m(Ws,[["__scopeId","data-v-9f4ba9bd"]]),Js=g({__name:"VPHomeHero",setup(s){const{frontmatter:e}=V();return(t,n)=>r(e).hero?(a(),$(Ys,{key:0,class:"VPHomeHero",name:r(e).hero.name,text:r(e).hero.text,tagline:r(e).hero.tagline,image:r(e).hero.image,actions:r(e).hero.actions},{"home-hero-info":v(()=>[u(t.$slots,"home-hero-info")]),"home-hero-image":v(()=>[u(t.$slots,"home-hero-image")]),_:3},8,["name","text","tagline","image","actions"])):f("",!0)}}),Xs={},Zs={xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},Qs=c("path",{d:"M19.9,12.4c0.1-0.2,0.1-0.5,0-0.8c-0.1-0.1-0.1-0.2-0.2-0.3l-7-7c-0.4-0.4-1-0.4-1.4,0s-0.4,1,0,1.4l5.3,5.3H5c-0.6,0-1,0.4-1,1s0.4,1,1,1h11.6l-5.3,5.3c-0.4,0.4-0.4,1,0,1.4c0.2,0.2,0.5,0.3,0.7,0.3s0.5-0.1,0.7-0.3l7-7C19.8,12.6,19.9,12.5,19.9,12.4z"},null,-1),en=[Qs];function tn(s,e){return a(),i("svg",Zs,en)}const sn=m(Xs,[["render",tn]]),nn={class:"box"},on={key:0,class:"icon"},an=["innerHTML"],ln=["innerHTML"],rn=["innerHTML"],cn={key:4,class:"link-text"},un={class:"link-text-value"},dn=g({__name:"VPFeature",props:{icon:{},title:{},details:{},link:{},linkText:{},rel:{},target:{}},setup(s){return(e,t)=>(a(),$(G,{class:"VPFeature",href:e.link,rel:e.rel,target:e.target,"no-icon":!0,tag:e.link?"a":"div"},{default:v(()=>[c("article",nn,[typeof e.icon=="object"&&e.icon.wrap?(a(),i("div",on,[h(ee,{image:e.icon,alt:e.icon.alt,height:e.icon.height||48,width:e.icon.width||48},null,8,["image","alt","height","width"])])):typeof e.icon=="object"?(a(),$(ee,{key:1,image:e.icon,alt:e.icon.alt,height:e.icon.height||48,width:e.icon.width||48},null,8,["image","alt","height","width"])):e.icon?(a(),i("div",{key:2,class:"icon",innerHTML:e.icon},null,8,an)):f("",!0),c("h2",{class:"title",innerHTML:e.title},null,8,ln),e.details?(a(),i("p",{key:3,class:"details",innerHTML:e.details},null,8,rn)):f("",!0),e.linkText?(a(),i("div",cn,[c("p",un,[x(L(e.linkText)+" ",1),h(sn,{class:"link-text-icon"})])])):f("",!0)])]),_:1},8,["href","rel","target","tag"]))}});const _n=m(dn,[["__scopeId","data-v-484eeed2"]]),vn={key:0,class:"VPFeatures"},pn={class:"container"},hn={class:"items"},fn=g({__name:"VPFeatures",props:{features:{}},setup(s){const e=s,t=P(()=>{const n=e.features.length;if(n){if(n===2)return"grid-2";if(n===3)return"grid-3";if(n%3===0)return"grid-6";if(n>3)return"grid-4"}else return});return(n,o)=>n.features?(a(),i("div",vn,[c("div",pn,[c("div",hn,[(a(!0),i(T,null,A(n.features,l=>(a(),i("div",{key:l.title,class:C(["item",[t.value]])},[h(_n,{icon:l.icon,title:l.title,details:l.details,link:l.link,"link-text":l.linkText,rel:l.rel,target:l.target},null,8,["icon","title","details","link","link-text","rel","target"])],2))),128))])])])):f("",!0)}});const mn=m(fn,[["__scopeId","data-v-a4ebea2b"]]),gn=g({__name:"VPHomeFeatures",setup(s){const{frontmatter:e}=V();return(t,n)=>r(e).features?(a(),$(mn,{key:0,class:"VPHomeFeatures",features:r(e).features},null,8,["features"])):f("",!0)}}),bn={class:"VPHome"},$n=g({__name:"VPHome",setup(s){return(e,t)=>{const n=R("Content");return a(),i("div",bn,[u(e.$slots,"home-hero-before",{},void 0,!0),h(Js,null,{"home-hero-info":v(()=>[u(e.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-image":v(()=>[u(e.$slots,"home-hero-image",{},void 0,!0)]),_:3}),u(e.$slots,"home-hero-after",{},void 0,!0),u(e.$slots,"home-features-before",{},void 0,!0),h(gn),u(e.$slots,"home-features-after",{},void 0,!0),h(n)])}}});const kn=m($n,[["__scopeId","data-v-26209f9b"]]),yn={},Pn={class:"VPPage"};function Vn(s,e){const t=R("Content");return a(),i("div",Pn,[u(s.$slots,"page-top"),h(t),u(s.$slots,"page-bottom")])}const wn=m(yn,[["render",Vn]]),Ln=g({__name:"VPContent",setup(s){const{page:e,frontmatter:t}=V(),{hasSidebar:n}=F();return(o,l)=>(a(),i("div",{class:C(["VPContent",{"has-sidebar":r(n),"is-home":r(t).layout==="home"}]),id:"VPContent"},[r(e).isNotFound?u(o.$slots,"not-found",{key:0},()=>[h(vt)],!0):r(t).layout==="page"?(a(),$(wn,{key:1},{"page-top":v(()=>[u(o.$slots,"page-top",{},void 0,!0)]),"page-bottom":v(()=>[u(o.$slots,"page-bottom",{},void 0,!0)]),_:3})):r(t).layout==="home"?(a(),$(kn,{key:2},{"home-hero-before":v(()=>[u(o.$slots,"home-hero-before",{},void 0,!0)]),"home-hero-info":v(()=>[u(o.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-image":v(()=>[u(o.$slots,"home-hero-image",{},void 0,!0)]),"home-hero-after":v(()=>[u(o.$slots,"home-hero-after",{},void 0,!0)]),"home-features-before":v(()=>[u(o.$slots,"home-features-before",{},void 0,!0)]),"home-features-after":v(()=>[u(o.$slots,"home-features-after",{},void 0,!0)]),_:3})):r(t).layout&&r(t).layout!=="doc"?(a(),$(U(r(t).layout),{key:3})):(a(),$(Cs,{key:4},{"doc-top":v(()=>[u(o.$slots,"doc-top",{},void 0,!0)]),"doc-bottom":v(()=>[u(o.$slots,"doc-bottom",{},void 0,!0)]),"doc-footer-before":v(()=>[u(o.$slots,"doc-footer-before",{},void 0,!0)]),"doc-before":v(()=>[u(o.$slots,"doc-before",{},void 0,!0)]),"doc-after":v(()=>[u(o.$slots,"doc-after",{},void 0,!0)]),"aside-top":v(()=>[u(o.$slots,"aside-top",{},void 0,!0)]),"aside-outline-before":v(()=>[u(o.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":v(()=>[u(o.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":v(()=>[u(o.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":v(()=>[u(o.$slots,"aside-ads-after",{},void 0,!0)]),"aside-bottom":v(()=>[u(o.$slots,"aside-bottom",{},void 0,!0)]),_:3}))],2))}});const Sn=m(Ln,[["__scopeId","data-v-2b03cc39"]]),Mn={class:"container"},Nn=["innerHTML"],In=["innerHTML"],Tn=g({__name:"VPFooter",setup(s){const{theme:e,frontmatter:t}=V(),{hasSidebar:n}=F();return(o,l)=>r(e).footer&&r(t).footer!==!1?(a(),i("footer",{key:0,class:C(["VPFooter",{"has-sidebar":r(n)}])},[c("div",Mn,[r(e).footer.message?(a(),i("p",{key:0,class:"message",innerHTML:r(e).footer.message},null,8,Nn)):f("",!0),r(e).footer.copyright?(a(),i("p",{key:1,class:"copyright",innerHTML:r(e).footer.copyright},null,8,In)):f("",!0)])],2)):f("",!0)}});const Cn=m(Tn,[["__scopeId","data-v-8a6e0bb4"]]),Bn={class:"header"},An={class:"outline"},xn=g({__name:"VPLocalNavOutlineDropdown",props:{headers:{},navHeight:{}},setup(s){const e=s,{theme:t}=V(),n=I(!1),o=I(0),l=I();Y(()=>{n.value=!1});function d(){n.value=!n.value,o.value=window.innerHeight+Math.min(window.scrollY-e.navHeight,0)}function p(b){b.target.classList.contains("outline-link")&&(l.value&&(l.value.style.transition="none"),Ge(()=>{n.value=!1}))}function _(){n.value=!1,window.scrollTo({top:0,left:0,behavior:"smooth"})}return(b,w)=>(a(),i("div",{class:"VPLocalNavOutlineDropdown",style:Oe({"--vp-vh":o.value+"px"})},[b.headers.length>0?(a(),i("button",{key:0,onClick:d,class:C({open:n.value})},[x(L(r(ve)(r(t)))+" ",1),h(fe,{class:"icon"})],2)):(a(),i("button",{key:1,onClick:_},L(r(t).returnToTopLabel||"Return to top"),1)),h(ce,{name:"flyout"},{default:v(()=>[n.value?(a(),i("div",{key:0,ref_key:"items",ref:l,class:"items",onClick:p},[c("div",Bn,[c("a",{class:"top-link",href:"#",onClick:_},L(r(t).returnToTopLabel||"Return to top"),1)]),c("div",An,[h(he,{headers:b.headers},null,8,["headers"])])],512)):f("",!0)]),_:1})],4))}});const Hn=m(xn,[["__scopeId","data-v-885e757a"]]),zn={},Dn={xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false",viewBox:"0 0 24 24"},En=c("path",{d:"M17,11H3c-0.6,0-1-0.4-1-1s0.4-1,1-1h14c0.6,0,1,0.4,1,1S17.6,11,17,11z"},null,-1),Fn=c("path",{d:"M21,7H3C2.4,7,2,6.6,2,6s0.4-1,1-1h18c0.6,0,1,0.4,1,1S21.6,7,21,7z"},null,-1),On=c("path",{d:"M21,15H3c-0.6,0-1-0.4-1-1s0.4-1,1-1h18c0.6,0,1,0.4,1,1S21.6,15,21,15z"},null,-1),Gn=c("path",{d:"M17,19H3c-0.6,0-1-0.4-1-1s0.4-1,1-1h14c0.6,0,1,0.4,1,1S17.6,19,17,19z"},null,-1),Un=[En,Fn,On,Gn];function jn(s,e){return a(),i("svg",Dn,Un)}const Kn=m(zn,[["render",jn]]),qn=["aria-expanded"],Rn={class:"menu-text"},Wn=g({__name:"VPLocalNav",props:{open:{type:Boolean}},emits:["open-menu"],setup(s){const{theme:e,frontmatter:t}=V(),{hasSidebar:n}=F(),{y:o}=Se(),l=_e([]),d=I(0);K(()=>{d.value=parseInt(getComputedStyle(document.documentElement).getPropertyValue("--vp-nav-height"))}),Y(()=>{l.value=pe(t.value.outline??e.value.outline)});const p=P(()=>l.value.length===0&&!n.value),_=P(()=>({VPLocalNav:!0,fixed:p.value,"reached-top":o.value>=d.value}));return(b,w)=>r(t).layout!=="home"&&(!p.value||r(o)>=d.value)?(a(),i("div",{key:0,class:C(_.value)},[r(n)?(a(),i("button",{key:0,class:"menu","aria-expanded":b.open,"aria-controls":"VPSidebarNav",onClick:w[0]||(w[0]=S=>b.$emit("open-menu"))},[h(Kn,{class:"menu-icon"}),c("span",Rn,L(r(e).sidebarMenuLabel||"Menu"),1)],8,qn)):f("",!0),h(Hn,{headers:l.value,navHeight:d.value},null,8,["headers","navHeight"])],2)):f("",!0)}});const Yn=m(Wn,[["__scopeId","data-v-d3e292f7"]]);function Jn(){const s=I(!1);function e(){s.value=!0,window.addEventListener("resize",o)}function t(){s.value=!1,window.removeEventListener("resize",o)}function n(){s.value?t():e()}function o(){window.outerWidth>=768&&t()}const l=se();return q(()=>l.path,t),{isScreenOpen:s,openScreen:e,closeScreen:t,toggleScreen:n}}const Xn={},Zn={class:"VPSwitch",type:"button",role:"switch"},Qn={class:"check"},eo={key:0,class:"icon"};function to(s,e){return a(),i("button",Zn,[c("span",Qn,[s.$slots.default?(a(),i("span",eo,[u(s.$slots,"default",{},void 0,!0)])):f("",!0)])])}const so=m(Xn,[["render",to],["__scopeId","data-v-979c26e2"]]),no={},oo={xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false",viewBox:"0 0 24 24"},ao=c("path",{d:"M12.1,22c-0.3,0-0.6,0-0.9,0c-5.5-0.5-9.5-5.4-9-10.9c0.4-4.8,4.2-8.6,9-9c0.4,0,0.8,0.2,1,0.5c0.2,0.3,0.2,0.8-0.1,1.1c-2,2.7-1.4,6.4,1.3,8.4c2.1,1.6,5,1.6,7.1,0c0.3-0.2,0.7-0.3,1.1-0.1c0.3,0.2,0.5,0.6,0.5,1c-0.2,2.7-1.5,5.1-3.6,6.8C16.6,21.2,14.4,22,12.1,22zM9.3,4.4c-2.9,1-5,3.6-5.2,6.8c-0.4,4.4,2.8,8.3,7.2,8.7c2.1,0.2,4.2-0.4,5.8-1.8c1.1-0.9,1.9-2.1,2.4-3.4c-2.5,0.9-5.3,0.5-7.5-1.1C9.2,11.4,8.1,7.7,9.3,4.4z"},null,-1),lo=[ao];function ro(s,e){return a(),i("svg",oo,lo)}const io=m(no,[["render",ro]]),co={},uo={xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false",viewBox:"0 0 24 24"},_o=Ue('',9),vo=[_o];function po(s,e){return a(),i("svg",uo,vo)}const ho=m(co,[["render",po]]),fo=g({__name:"VPSwitchAppearance",setup(s){const{isDark:e}=V(),t=ne("toggle-appearance",()=>{e.value=!e.value});return(n,o)=>(a(),$(so,{title:"toggle dark mode",class:"VPSwitchAppearance","aria-checked":r(e),onClick:r(t)},{default:v(()=>[h(ho,{class:"sun"}),h(io,{class:"moon"})]),_:1},8,["aria-checked","onClick"]))}});const me=m(fo,[["__scopeId","data-v-fb67176c"]]),mo={key:0,class:"VPNavBarAppearance"},go=g({__name:"VPNavBarAppearance",setup(s){const{site:e}=V();return(t,n)=>r(e).appearance&&r(e).appearance!=="force-dark"?(a(),i("div",mo,[h(me)])):f("",!0)}});const bo=m(go,[["__scopeId","data-v-1b34bacc"]]),ge=I();let Ce=!1,ae=0;function $o(s){const e=I(!1);if(W){!Ce&&ko(),ae++;const t=q(ge,n=>{var o,l,d;n===s.el.value||(o=s.el.value)!=null&&o.contains(n)?(e.value=!0,(l=s.onFocus)==null||l.call(s)):(e.value=!1,(d=s.onBlur)==null||d.call(s))});de(()=>{t(),ae--,ae||yo()})}return je(e)}function ko(){document.addEventListener("focusin",Be),Ce=!0,ge.value=document.activeElement}function yo(){document.removeEventListener("focusin",Be)}function Be(){ge.value=document.activeElement}const Po={},Vo={xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false",viewBox:"0 0 24 24"},wo=c("path",{d:"M12,16c-0.3,0-0.5-0.1-0.7-0.3l-6-6c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l5.3,5.3l5.3-5.3c0.4-0.4,1-0.4,1.4,0s0.4,1,0,1.4l-6,6C12.5,15.9,12.3,16,12,16z"},null,-1),Lo=[wo];function So(s,e){return a(),i("svg",Vo,Lo)}const Ae=m(Po,[["render",So]]),Mo={},No={xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false",viewBox:"0 0 24 24"},Io=c("circle",{cx:"12",cy:"12",r:"2"},null,-1),To=c("circle",{cx:"19",cy:"12",r:"2"},null,-1),Co=c("circle",{cx:"5",cy:"12",r:"2"},null,-1),Bo=[Io,To,Co];function Ao(s,e){return a(),i("svg",No,Bo)}const xo=m(Mo,[["render",Ao]]),Ho={class:"VPMenuLink"},zo=g({__name:"VPMenuLink",props:{item:{}},setup(s){const{page:e}=V();return(t,n)=>(a(),i("div",Ho,[h(G,{class:C({active:r(j)(r(e).relativePath,t.item.activeMatch||t.item.link,!!t.item.activeMatch)}),href:t.item.link,target:t.item.target,rel:t.item.rel},{default:v(()=>[x(L(t.item.text),1)]),_:1},8,["class","href","target","rel"])]))}});const oe=m(zo,[["__scopeId","data-v-f34060c4"]]),Do={class:"VPMenuGroup"},Eo={key:0,class:"title"},Fo=g({__name:"VPMenuGroup",props:{text:{},items:{}},setup(s){return(e,t)=>(a(),i("div",Do,[e.text?(a(),i("p",Eo,L(e.text),1)):f("",!0),(a(!0),i(T,null,A(e.items,n=>(a(),i(T,null,["link"in n?(a(),$(oe,{key:0,item:n},null,8,["item"])):f("",!0)],64))),256))]))}});const Oo=m(Fo,[["__scopeId","data-v-d9d9a1a9"]]),Go={class:"VPMenu"},Uo={key:0,class:"items"},jo=g({__name:"VPMenu",props:{items:{}},setup(s){return(e,t)=>(a(),i("div",Go,[e.items?(a(),i("div",Uo,[(a(!0),i(T,null,A(e.items,n=>(a(),i(T,{key:n.text},["link"in n?(a(),$(oe,{key:0,item:n},null,8,["item"])):(a(),$(Oo,{key:1,text:n.text,items:n.items},null,8,["text","items"]))],64))),128))])):f("",!0),u(e.$slots,"default",{},void 0,!0)]))}});const Ko=m(jo,[["__scopeId","data-v-b93937a4"]]),qo=["aria-expanded","aria-label"],Ro={key:0,class:"text"},Wo=["innerHTML"],Yo={class:"menu"},Jo=g({__name:"VPFlyout",props:{icon:{},button:{},label:{},items:{}},setup(s){const e=I(!1),t=I();$o({el:t,onBlur:n});function n(){e.value=!1}return(o,l)=>(a(),i("div",{class:"VPFlyout",ref_key:"el",ref:t,onMouseenter:l[1]||(l[1]=d=>e.value=!0),onMouseleave:l[2]||(l[2]=d=>e.value=!1)},[c("button",{type:"button",class:"button","aria-haspopup":"true","aria-expanded":e.value,"aria-label":o.label,onClick:l[0]||(l[0]=d=>e.value=!e.value)},[o.button||o.icon?(a(),i("span",Ro,[o.icon?(a(),$(U(o.icon),{key:0,class:"option-icon"})):f("",!0),o.button?(a(),i("span",{key:1,innerHTML:o.button},null,8,Wo)):f("",!0),h(Ae,{class:"text-icon"})])):(a(),$(xo,{key:1,class:"icon"}))],8,qo),c("div",Yo,[h(Ko,{items:o.items},{default:v(()=>[u(o.$slots,"default",{},void 0,!0)]),_:3},8,["items"])])],544))}});const be=m(Jo,[["__scopeId","data-v-e68c2038"]]),Xo={discord:'Discord',facebook:'Facebook',github:'GitHub',instagram:'Instagram',linkedin:'LinkedIn',mastodon:'Mastodon',slack:'Slack',twitter:'Twitter',x:'X',youtube:'YouTube'},Zo=["href","aria-label","innerHTML"],Qo=g({__name:"VPSocialLink",props:{icon:{},link:{},ariaLabel:{}},setup(s){const e=s,t=P(()=>typeof e.icon=="object"?e.icon.svg:Xo[e.icon]);return(n,o)=>(a(),i("a",{class:"VPSocialLink no-icon",href:n.link,"aria-label":n.ariaLabel??(typeof n.icon=="string"?n.icon:""),target:"_blank",rel:"noopener",innerHTML:t.value},null,8,Zo))}});const ea=m(Qo,[["__scopeId","data-v-89712794"]]),ta={class:"VPSocialLinks"},sa=g({__name:"VPSocialLinks",props:{links:{}},setup(s){return(e,t)=>(a(),i("div",ta,[(a(!0),i(T,null,A(e.links,({link:n,icon:o,ariaLabel:l})=>(a(),$(ea,{key:n,icon:o,link:n,ariaLabel:l},null,8,["icon","link","ariaLabel"]))),128))]))}});const $e=m(sa,[["__scopeId","data-v-75d6f2f5"]]),na={key:0,class:"group translations"},oa={class:"trans-title"},aa={key:1,class:"group"},la={class:"item appearance"},ra={class:"label"},ia={class:"appearance-action"},ca={key:2,class:"group"},ua={class:"item social-links"},da=g({__name:"VPNavBarExtra",setup(s){const{site:e,theme:t}=V(),{localeLinks:n,currentLang:o}=X({correspondingLink:!0}),l=P(()=>n.value.length&&o.value.label||e.value.appearance||t.value.socialLinks);return(d,p)=>l.value?(a(),$(be,{key:0,class:"VPNavBarExtra",label:"extra navigation"},{default:v(()=>[r(n).length&&r(o).label?(a(),i("div",na,[c("p",oa,L(r(o).label),1),(a(!0),i(T,null,A(r(n),_=>(a(),$(oe,{key:_.link,item:_},null,8,["item"]))),128))])):f("",!0),r(e).appearance?(a(),i("div",aa,[c("div",la,[c("p",ra,L(r(t).darkModeSwitchLabel||"Appearance"),1),c("div",ia,[h(me)])])])):f("",!0),r(t).socialLinks?(a(),i("div",ca,[c("div",ua,[h($e,{class:"social-links-list",links:r(t).socialLinks},null,8,["links"])])])):f("",!0)]),_:1})):f("",!0)}});const _a=m(da,[["__scopeId","data-v-754c055d"]]),va=s=>(H("data-v-c70218b2"),s=s(),z(),s),pa=["aria-expanded"],ha=va(()=>c("span",{class:"container"},[c("span",{class:"top"}),c("span",{class:"middle"}),c("span",{class:"bottom"})],-1)),fa=[ha],ma=g({__name:"VPNavBarHamburger",props:{active:{type:Boolean}},emits:["click"],setup(s){return(e,t)=>(a(),i("button",{type:"button",class:C(["VPNavBarHamburger",{active:e.active}]),"aria-label":"mobile navigation","aria-expanded":e.active,"aria-controls":"VPNavScreen",onClick:t[0]||(t[0]=n=>e.$emit("click"))},fa,10,pa))}});const ga=m(ma,[["__scopeId","data-v-c70218b2"]]),ba=["innerHTML"],$a=g({__name:"VPNavBarMenuLink",props:{item:{}},setup(s){const{page:e}=V();return(t,n)=>(a(),$(G,{class:C({VPNavBarMenuLink:!0,active:r(j)(r(e).relativePath,t.item.activeMatch||t.item.link,!!t.item.activeMatch)}),href:t.item.link,target:t.item.target,rel:t.item.rel,tabindex:"0"},{default:v(()=>[c("span",{innerHTML:t.item.text},null,8,ba)]),_:1},8,["class","href","target","rel"]))}});const ka=m($a,[["__scopeId","data-v-f7d34d3c"]]),ya=g({__name:"VPNavBarMenuGroup",props:{item:{}},setup(s){const e=s,{page:t}=V(),n=l=>"link"in l?j(t.value.relativePath,l.link,!!e.item.activeMatch):l.items.some(n),o=P(()=>n(e.item));return(l,d)=>(a(),$(be,{class:C({VPNavBarMenuGroup:!0,active:r(j)(r(t).relativePath,l.item.activeMatch,!!l.item.activeMatch)||o.value}),button:l.item.text,items:l.item.items},null,8,["class","button","items"]))}}),Pa=s=>(H("data-v-344279fb"),s=s(),z(),s),Va={key:0,"aria-labelledby":"main-nav-aria-label",class:"VPNavBarMenu"},wa=Pa(()=>c("span",{id:"main-nav-aria-label",class:"visually-hidden"},"Main Navigation",-1)),La=g({__name:"VPNavBarMenu",setup(s){const{theme:e}=V();return(t,n)=>r(e).nav?(a(),i("nav",Va,[wa,(a(!0),i(T,null,A(r(e).nav,o=>(a(),i(T,{key:o.text},["link"in o?(a(),$(ka,{key:0,item:o},null,8,["item"])):(a(),$(ya,{key:1,item:o},null,8,["item"]))],64))),128))])):f("",!0)}});const Sa=m(La,[["__scopeId","data-v-344279fb"]]);const Ma={type:"button",class:"DocSearch DocSearch-Button","aria-label":"Search"},Na={class:"DocSearch-Button-Container"},Ia=c("svg",{class:"DocSearch-Search-Icon",width:"20",height:"20",viewBox:"0 0 20 20","aria-label":"search icon"},[c("path",{d:"M14.386 14.386l4.0877 4.0877-4.0877-4.0877c-2.9418 2.9419-7.7115 2.9419-10.6533 0-2.9419-2.9418-2.9419-7.7115 0-10.6533 2.9418-2.9419 7.7115-2.9419 10.6533 0 2.9419 2.9418 2.9419 7.7115 0 10.6533z",stroke:"currentColor",fill:"none","fill-rule":"evenodd","stroke-linecap":"round","stroke-linejoin":"round"})],-1),Ta={class:"DocSearch-Button-Placeholder"},Ca=c("span",{class:"DocSearch-Button-Keys"},[c("kbd",{class:"DocSearch-Button-Key"}),c("kbd",{class:"DocSearch-Button-Key"},"K")],-1),Ve=g({__name:"VPNavBarSearchButton",props:{placeholder:{}},setup(s){return(e,t)=>(a(),i("button",Ma,[c("span",Na,[Ia,c("span",Ta,L(e.placeholder),1)]),Ca]))}});const Ba={class:"VPNavBarSearch"},Aa={id:"local-search"},xa={key:1,id:"docsearch"},Ha=g({__name:"VPNavBarSearch",setup(s){const e=Ke(()=>qe(()=>import("./VPLocalSearchBox.a8ac6602.js"),["assets/chunks/VPLocalSearchBox.a8ac6602.js","assets/chunks/framework.477046d0.js"])),t=()=>null,{theme:n,localeIndex:o}=V(),l=I(!1),d=I(!1),p=P(()=>{var M,N,y,D,O,E,ke;const k=((M=n.value.search)==null?void 0:M.options)??n.value.algolia;return((O=(D=(y=(N=k==null?void 0:k.locales)==null?void 0:N[o.value])==null?void 0:y.translations)==null?void 0:D.button)==null?void 0:O.buttonText)||((ke=(E=k==null?void 0:k.translations)==null?void 0:E.button)==null?void 0:ke.buttonText)||"Search"});K(()=>{});function _(){l.value||(l.value=!0,setTimeout(b,16))}function b(){const k=new Event("keydown");k.key="k",k.metaKey=!0,window.dispatchEvent(k),setTimeout(()=>{document.querySelector(".DocSearch-Modal")||b()},16)}function w(k){const M=k.target,N=M.tagName;return M.isContentEditable||N==="INPUT"||N==="SELECT"||N==="TEXTAREA"}const S=I(!1);ye("k",k=>{(k.ctrlKey||k.metaKey)&&(k.preventDefault(),S.value=!0)}),ye("/",k=>{w(k)||(k.preventDefault(),S.value=!0)});const B="local";return(k,M)=>{var N;return a(),i("div",Ba,[r(B)==="local"?(a(),i(T,{key:0},[S.value?(a(),$(r(e),{key:0,placeholder:p.value,onClose:M[0]||(M[0]=y=>S.value=!1)},null,8,["placeholder"])):f("",!0),c("div",Aa,[h(Ve,{placeholder:p.value,onClick:M[1]||(M[1]=y=>S.value=!0)},null,8,["placeholder"])])],64)):r(B)==="algolia"?(a(),i(T,{key:1},[l.value?(a(),$(r(t),{key:0,algolia:((N=r(n).search)==null?void 0:N.options)??r(n).algolia,onVnodeBeforeMount:M[2]||(M[2]=y=>d.value=!0)},null,8,["algolia"])):f("",!0),d.value?f("",!0):(a(),i("div",xa,[h(Ve,{placeholder:p.value,onClick:_},null,8,["placeholder"])]))],64)):f("",!0)])}}});const za=g({__name:"VPNavBarSocialLinks",setup(s){const{theme:e}=V();return(t,n)=>r(e).socialLinks?(a(),$($e,{key:0,class:"VPNavBarSocialLinks",links:r(e).socialLinks},null,8,["links"])):f("",!0)}});const Da=m(za,[["__scopeId","data-v-ce6708f5"]]),Ea=["href"],Fa=g({__name:"VPNavBarTitle",setup(s){const{site:e,theme:t}=V(),{hasSidebar:n}=F(),{currentLang:o}=X();return(l,d)=>(a(),i("div",{class:C(["VPNavBarTitle",{"has-sidebar":r(n)}])},[c("a",{class:"title",href:r(t).logoLink??r(J)(r(o).link)},[u(l.$slots,"nav-bar-title-before",{},void 0,!0),r(t).logo?(a(),$(ee,{key:0,class:"logo",image:r(t).logo},null,8,["image"])):f("",!0),r(t).siteTitle?(a(),i(T,{key:1},[x(L(r(t).siteTitle),1)],64)):r(t).siteTitle===void 0?(a(),i(T,{key:2},[x(L(r(e).title),1)],64)):f("",!0),u(l.$slots,"nav-bar-title-after",{},void 0,!0)],8,Ea)],2))}});const Oa=m(Fa,[["__scopeId","data-v-7f378e0f"]]),Ga={},Ua={xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false",viewBox:"0 0 24 24"},ja=c("path",{d:"M0 0h24v24H0z",fill:"none"},null,-1),Ka=c("path",{d:" M12.87 15.07l-2.54-2.51.03-.03c1.74-1.94 2.98-4.17 3.71-6.53H17V4h-7V2H8v2H1v1.99h11.17C11.5 7.92 10.44 9.75 9 11.35 8.07 10.32 7.3 9.19 6.69 8h-2c.73 1.63 1.73 3.17 2.98 4.56l-5.09 5.02L4 19l5-5 3.11 3.11.76-2.04zM18.5 10h-2L12 22h2l1.12-3h4.75L21 22h2l-4.5-12zm-2.62 7l1.62-4.33L19.12 17h-3.24z ",class:"css-c4d79v"},null,-1),qa=[ja,Ka];function Ra(s,e){return a(),i("svg",Ua,qa)}const xe=m(Ga,[["render",Ra]]),Wa={class:"items"},Ya={class:"title"},Ja=g({__name:"VPNavBarTranslations",setup(s){const{theme:e}=V(),{localeLinks:t,currentLang:n}=X({correspondingLink:!0});return(o,l)=>r(t).length&&r(n).label?(a(),$(be,{key:0,class:"VPNavBarTranslations",icon:xe,label:r(e).langMenuLabel||"Change language"},{default:v(()=>[c("div",Wa,[c("p",Ya,L(r(n).label),1),(a(!0),i(T,null,A(r(t),d=>(a(),$(oe,{key:d.link,item:d},null,8,["item"]))),128))])]),_:1},8,["label"])):f("",!0)}});const Xa=m(Ja,[["__scopeId","data-v-555fc0a2"]]),Za=s=>(H("data-v-c3e73ad1"),s=s(),z(),s),Qa={class:"container"},el={class:"title"},tl={class:"content"},sl=Za(()=>c("div",{class:"curtain"},null,-1)),nl={class:"content-body"},ol=g({__name:"VPNavBar",props:{isScreenOpen:{type:Boolean}},emits:["toggle-screen"],setup(s){const{y:e}=Se(),{hasSidebar:t}=F(),{frontmatter:n}=V(),o=I({});return we(()=>{o.value={"has-sidebar":t.value,top:n.value.layout==="home"&&e.value===0}}),(l,d)=>(a(),i("div",{class:C(["VPNavBar",o.value])},[c("div",Qa,[c("div",el,[h(Oa,null,{"nav-bar-title-before":v(()=>[u(l.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":v(()=>[u(l.$slots,"nav-bar-title-after",{},void 0,!0)]),_:3})]),c("div",tl,[sl,c("div",nl,[u(l.$slots,"nav-bar-content-before",{},void 0,!0),h(Ha,{class:"search"}),h(Sa,{class:"menu"}),h(Xa,{class:"translations"}),h(bo,{class:"appearance"}),h(Da,{class:"social-links"}),h(_a,{class:"extra"}),u(l.$slots,"nav-bar-content-after",{},void 0,!0),h(ga,{class:"hamburger",active:l.isScreenOpen,onClick:d[0]||(d[0]=p=>l.$emit("toggle-screen"))},null,8,["active"])])])])],2))}});const al=m(ol,[["__scopeId","data-v-c3e73ad1"]]),ll={key:0,class:"VPNavScreenAppearance"},rl={class:"text"},il=g({__name:"VPNavScreenAppearance",setup(s){const{site:e,theme:t}=V();return(n,o)=>r(e).appearance?(a(),i("div",ll,[c("p",rl,L(r(t).darkModeSwitchLabel||"Appearance"),1),h(me)])):f("",!0)}});const cl=m(il,[["__scopeId","data-v-0ef3d703"]]),ul=g({__name:"VPNavScreenMenuLink",props:{item:{}},setup(s){const e=ne("close-screen");return(t,n)=>(a(),$(G,{class:"VPNavScreenMenuLink",href:t.item.link,target:t.item.target,rel:t.item.rel,onClick:r(e)},{default:v(()=>[x(L(t.item.text),1)]),_:1},8,["href","target","rel","onClick"]))}});const dl=m(ul,[["__scopeId","data-v-cd45b3cd"]]),_l={},vl={xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false",viewBox:"0 0 24 24"},pl=c("path",{d:"M18.9,10.9h-6v-6c0-0.6-0.4-1-1-1s-1,0.4-1,1v6h-6c-0.6,0-1,0.4-1,1s0.4,1,1,1h6v6c0,0.6,0.4,1,1,1s1-0.4,1-1v-6h6c0.6,0,1-0.4,1-1S19.5,10.9,18.9,10.9z"},null,-1),hl=[pl];function fl(s,e){return a(),i("svg",vl,hl)}const ml=m(_l,[["render",fl]]),gl=g({__name:"VPNavScreenMenuGroupLink",props:{item:{}},setup(s){const e=ne("close-screen");return(t,n)=>(a(),$(G,{class:"VPNavScreenMenuGroupLink",href:t.item.link,target:t.item.target,rel:t.item.rel,onClick:r(e)},{default:v(()=>[x(L(t.item.text),1)]),_:1},8,["href","target","rel","onClick"]))}});const He=m(gl,[["__scopeId","data-v-67e5b794"]]),bl={class:"VPNavScreenMenuGroupSection"},$l={key:0,class:"title"},kl=g({__name:"VPNavScreenMenuGroupSection",props:{text:{},items:{}},setup(s){return(e,t)=>(a(),i("div",bl,[e.text?(a(),i("p",$l,L(e.text),1)):f("",!0),(a(!0),i(T,null,A(e.items,n=>(a(),$(He,{key:n.text,item:n},null,8,["item"]))),128))]))}});const yl=m(kl,[["__scopeId","data-v-c7bb2a3e"]]),Pl=["aria-controls","aria-expanded"],Vl={class:"button-text"},wl=["id"],Ll={key:1,class:"group"},Sl=g({__name:"VPNavScreenMenuGroup",props:{text:{},items:{}},setup(s){const e=s,t=I(!1),n=P(()=>`NavScreenGroup-${e.text.replace(" ","-").toLowerCase()}`);function o(){t.value=!t.value}return(l,d)=>(a(),i("div",{class:C(["VPNavScreenMenuGroup",{open:t.value}])},[c("button",{class:"button","aria-controls":n.value,"aria-expanded":t.value,onClick:o},[c("span",Vl,L(l.text),1),h(ml,{class:"button-icon"})],8,Pl),c("div",{id:n.value,class:"items"},[(a(!0),i(T,null,A(l.items,p=>(a(),i(T,{key:p.text},["link"in p?(a(),i("div",{key:p.text,class:"item"},[h(He,{item:p},null,8,["item"])])):(a(),i("div",Ll,[h(yl,{text:p.text,items:p.items},null,8,["text","items"])]))],64))),128))],8,wl)],2))}});const Ml=m(Sl,[["__scopeId","data-v-63fd6e4e"]]),Nl={key:0,class:"VPNavScreenMenu"},Il=g({__name:"VPNavScreenMenu",setup(s){const{theme:e}=V();return(t,n)=>r(e).nav?(a(),i("nav",Nl,[(a(!0),i(T,null,A(r(e).nav,o=>(a(),i(T,{key:o.text},["link"in o?(a(),$(dl,{key:0,item:o},null,8,["item"])):(a(),$(Ml,{key:1,text:o.text||"",items:o.items},null,8,["text","items"]))],64))),128))])):f("",!0)}}),Tl=g({__name:"VPNavScreenSocialLinks",setup(s){const{theme:e}=V();return(t,n)=>r(e).socialLinks?(a(),$($e,{key:0,class:"VPNavScreenSocialLinks",links:r(e).socialLinks},null,8,["links"])):f("",!0)}}),Cl={class:"list"},Bl=g({__name:"VPNavScreenTranslations",setup(s){const{localeLinks:e,currentLang:t}=X({correspondingLink:!0}),n=I(!1);function o(){n.value=!n.value}return(l,d)=>r(e).length&&r(t).label?(a(),i("div",{key:0,class:C(["VPNavScreenTranslations",{open:n.value}])},[c("button",{class:"title",onClick:o},[h(xe,{class:"icon lang"}),x(" "+L(r(t).label)+" ",1),h(Ae,{class:"icon chevron"})]),c("ul",Cl,[(a(!0),i(T,null,A(r(e),p=>(a(),i("li",{key:p.link,class:"item"},[h(G,{class:"link",href:p.link},{default:v(()=>[x(L(p.text),1)]),_:2},1032,["href"])]))),128))])],2)):f("",!0)}});const Al=m(Bl,[["__scopeId","data-v-10cb32fc"]]),xl={class:"container"},Hl=g({__name:"VPNavScreen",props:{open:{type:Boolean}},setup(s){const e=I(null),t=Me(W?document.body:null);return(n,o)=>(a(),$(ce,{name:"fade",onEnter:o[0]||(o[0]=l=>t.value=!0),onAfterLeave:o[1]||(o[1]=l=>t.value=!1)},{default:v(()=>[n.open?(a(),i("div",{key:0,class:"VPNavScreen",ref_key:"screen",ref:e,id:"VPNavScreen"},[c("div",xl,[u(n.$slots,"nav-screen-content-before",{},void 0,!0),h(Il,{class:"menu"}),h(Al,{class:"translations"}),h(cl,{class:"appearance"}),h(Tl,{class:"social-links"}),u(n.$slots,"nav-screen-content-after",{},void 0,!0)])],512)):f("",!0)]),_:3}))}});const zl=m(Hl,[["__scopeId","data-v-c4b5a2af"]]),Dl={key:0,class:"VPNav"},El=g({__name:"VPNav",setup(s){const{isScreenOpen:e,closeScreen:t,toggleScreen:n}=Jn(),{frontmatter:o}=V(),l=P(()=>o.value.navbar!==!1);return Ne("close-screen",t),te(()=>{W&&document.documentElement.classList.toggle("hide-nav",!l.value)}),(d,p)=>l.value?(a(),i("header",Dl,[h(al,{"is-screen-open":r(e),onToggleScreen:r(n)},{"nav-bar-title-before":v(()=>[u(d.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":v(()=>[u(d.$slots,"nav-bar-title-after",{},void 0,!0)]),"nav-bar-content-before":v(()=>[u(d.$slots,"nav-bar-content-before",{},void 0,!0)]),"nav-bar-content-after":v(()=>[u(d.$slots,"nav-bar-content-after",{},void 0,!0)]),_:3},8,["is-screen-open","onToggleScreen"]),h(zl,{open:r(e)},{"nav-screen-content-before":v(()=>[u(d.$slots,"nav-screen-content-before",{},void 0,!0)]),"nav-screen-content-after":v(()=>[u(d.$slots,"nav-screen-content-after",{},void 0,!0)]),_:3},8,["open"])])):f("",!0)}});const Fl=m(El,[["__scopeId","data-v-a8878f8a"]]),Ol=s=>(H("data-v-66eb756e"),s=s(),z(),s),Gl=["role","tabindex"],Ul=Ol(()=>c("div",{class:"indicator"},null,-1)),jl=["onKeydown"],Kl={key:1,class:"items"},ql=g({__name:"VPSidebarItem",props:{item:{},depth:{}},setup(s){const e=s,{collapsed:t,collapsible:n,isLink:o,isActiveLink:l,hasActiveLink:d,hasChildren:p,toggle:_}=mt(P(()=>e.item)),b=P(()=>p.value?"section":"div"),w=P(()=>o.value?"a":"div"),S=P(()=>p.value?e.depth+2===7?"p":`h${e.depth+2}`:"p"),B=P(()=>o.value?void 0:"button"),k=P(()=>[[`level-${e.depth}`],{collapsible:n.value},{collapsed:t.value},{"is-link":o.value},{"is-active":l.value},{"has-active":d.value}]);function M(y){"key"in y&&y.key!=="Enter"||!e.item.link&&_()}function N(){e.item.link&&_()}return(y,D)=>{const O=R("VPSidebarItem",!0);return a(),$(U(b.value),{class:C(["VPSidebarItem",k.value])},{default:v(()=>[y.item.text?(a(),i("div",Z({key:0,class:"item",role:B.value},We(y.item.items?{click:M,keydown:M}:{},!0),{tabindex:y.item.items&&0}),[Ul,y.item.link?(a(),$(G,{key:0,tag:w.value,class:"link",href:y.item.link,rel:y.item.rel,target:y.item.target},{default:v(()=>[(a(),$(U(S.value),{class:"text",innerHTML:y.item.text},null,8,["innerHTML"]))]),_:1},8,["tag","href","rel","target"])):(a(),$(U(S.value),{key:1,class:"text",innerHTML:y.item.text},null,8,["innerHTML"])),y.item.collapsed!=null?(a(),i("div",{key:2,class:"caret",role:"button","aria-label":"toggle section",onClick:N,onKeydown:Re(N,["enter"]),tabindex:"0"},[h(fe,{class:"caret-icon"})],40,jl)):f("",!0)],16,Gl)):f("",!0),y.item.items&&y.item.items.length?(a(),i("div",Kl,[y.depth<5?(a(!0),i(T,{key:0},A(y.item.items,E=>(a(),$(O,{key:E.text,item:E,depth:y.depth+1},null,8,["item","depth"]))),128)):f("",!0)])):f("",!0)]),_:1},8,["class"])}}});const Rl=m(ql,[["__scopeId","data-v-66eb756e"]]),ze=s=>(H("data-v-e9e5071d"),s=s(),z(),s),Wl=ze(()=>c("div",{class:"curtain"},null,-1)),Yl={class:"nav",id:"VPSidebarNav","aria-labelledby":"sidebar-aria-label",tabindex:"-1"},Jl=ze(()=>c("span",{class:"visually-hidden",id:"sidebar-aria-label"}," Sidebar Navigation ",-1)),Xl=g({__name:"VPSidebar",props:{open:{type:Boolean}},setup(s){const e=s,{sidebarGroups:t,hasSidebar:n}=F(),o=I(null),l=Me(W?document.body:null);return q([e,o],()=>{var d;e.open?(l.value=!0,(d=o.value)==null||d.focus()):l.value=!1},{immediate:!0,flush:"post"}),(d,p)=>r(n)?(a(),i("aside",{key:0,class:C(["VPSidebar",{open:d.open}]),ref_key:"navEl",ref:o,onClick:p[0]||(p[0]=Ye(()=>{},["stop"]))},[Wl,c("nav",Yl,[Jl,u(d.$slots,"sidebar-nav-before",{},void 0,!0),(a(!0),i(T,null,A(r(t),_=>(a(),i("div",{key:_.text,class:"group"},[h(Rl,{item:_,depth:0},null,8,["item"])]))),128)),u(d.$slots,"sidebar-nav-after",{},void 0,!0)])],2)):f("",!0)}});const Zl=m(Xl,[["__scopeId","data-v-e9e5071d"]]),Ql=g({__name:"VPSkipLink",setup(s){const e=se(),t=I();q(()=>e.path,()=>t.value.focus());function n({target:o}){const l=document.getElementById(decodeURIComponent(o.hash).slice(1));if(l){const d=()=>{l.removeAttribute("tabindex"),l.removeEventListener("blur",d)};l.setAttribute("tabindex","-1"),l.addEventListener("blur",d),l.focus(),window.scrollTo(0,0)}}return(o,l)=>(a(),i(T,null,[c("span",{ref_key:"backToTop",ref:t,tabindex:"-1"},null,512),c("a",{href:"#VPContent",class:"VPSkipLink visually-hidden",onClick:n}," Skip to content ")],64))}});const er=m(Ql,[["__scopeId","data-v-7ac0da99"]]),tr=g({__name:"Layout",setup(s){const{isOpen:e,open:t,close:n}=F(),o=se();q(()=>o.path,n),ft(e,n);const{frontmatter:l}=V(),d=Je(),p=P(()=>!!d["home-hero-image"]);return Ne("hero-image-slot-exists",p),(_,b)=>{const w=R("Content");return r(l).layout!==!1?(a(),i("div",{key:0,class:C(["Layout",r(l).pageClass])},[u(_.$slots,"layout-top",{},void 0,!0),h(er),h(tt,{class:"backdrop",show:r(e),onClick:r(n)},null,8,["show","onClick"]),h(Fl,null,{"nav-bar-title-before":v(()=>[u(_.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":v(()=>[u(_.$slots,"nav-bar-title-after",{},void 0,!0)]),"nav-bar-content-before":v(()=>[u(_.$slots,"nav-bar-content-before",{},void 0,!0)]),"nav-bar-content-after":v(()=>[u(_.$slots,"nav-bar-content-after",{},void 0,!0)]),"nav-screen-content-before":v(()=>[u(_.$slots,"nav-screen-content-before",{},void 0,!0)]),"nav-screen-content-after":v(()=>[u(_.$slots,"nav-screen-content-after",{},void 0,!0)]),_:3}),h(Yn,{open:r(e),onOpenMenu:r(t)},null,8,["open","onOpenMenu"]),h(Zl,{open:r(e)},{"sidebar-nav-before":v(()=>[u(_.$slots,"sidebar-nav-before",{},void 0,!0)]),"sidebar-nav-after":v(()=>[u(_.$slots,"sidebar-nav-after",{},void 0,!0)]),_:3},8,["open"]),h(Sn,null,{"page-top":v(()=>[u(_.$slots,"page-top",{},void 0,!0)]),"page-bottom":v(()=>[u(_.$slots,"page-bottom",{},void 0,!0)]),"not-found":v(()=>[u(_.$slots,"not-found",{},void 0,!0)]),"home-hero-before":v(()=>[u(_.$slots,"home-hero-before",{},void 0,!0)]),"home-hero-info":v(()=>[u(_.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-image":v(()=>[u(_.$slots,"home-hero-image",{},void 0,!0)]),"home-hero-after":v(()=>[u(_.$slots,"home-hero-after",{},void 0,!0)]),"home-features-before":v(()=>[u(_.$slots,"home-features-before",{},void 0,!0)]),"home-features-after":v(()=>[u(_.$slots,"home-features-after",{},void 0,!0)]),"doc-footer-before":v(()=>[u(_.$slots,"doc-footer-before",{},void 0,!0)]),"doc-before":v(()=>[u(_.$slots,"doc-before",{},void 0,!0)]),"doc-after":v(()=>[u(_.$slots,"doc-after",{},void 0,!0)]),"doc-top":v(()=>[u(_.$slots,"doc-top",{},void 0,!0)]),"doc-bottom":v(()=>[u(_.$slots,"doc-bottom",{},void 0,!0)]),"aside-top":v(()=>[u(_.$slots,"aside-top",{},void 0,!0)]),"aside-bottom":v(()=>[u(_.$slots,"aside-bottom",{},void 0,!0)]),"aside-outline-before":v(()=>[u(_.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":v(()=>[u(_.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":v(()=>[u(_.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":v(()=>[u(_.$slots,"aside-ads-after",{},void 0,!0)]),_:3}),h(Cn),u(_.$slots,"layout-bottom",{},void 0,!0)],2)):(a(),$(w,{key:1}))}}});const sr=m(tr,[["__scopeId","data-v-b45c2b2b"]]);const or={Layout:sr,enhanceApp:({app:s})=>{s.component("Badge",Ze)}};function ar(s,e){const{localeIndex:t}=V();function n(o){var k,M;const l=o.split("."),d=s&&typeof s=="object",p=d&&((M=(k=s.locales)==null?void 0:k[t.value])==null?void 0:M.translations)||null,_=d&&s.translations||null;let b=p,w=_,S=e;const B=l.pop();for(const N of l){let y=null;const D=S==null?void 0:S[N];D&&(y=S=D);const O=w==null?void 0:w[N];O&&(y=w=O);const E=b==null?void 0:b[N];E&&(y=b=E),D||(S=y),O||(w=y),E||(b=y)}return(b==null?void 0:b[B])??(w==null?void 0:w[B])??(S==null?void 0:S[B])??""}return n}export{ar as c,or as t,V as u}; +import{d as g,o as a,c as i,r as u,n as C,a as x,t as L,_ as m,b as $,w as v,T as ce,e as f,u as De,i as Ee,f as ue,g as P,h as I,j as K,k as c,l as r,p as H,m as z,q as j,s as W,v as le,x as q,y as te,z as de,A as we,B as Fe,C as R,F as T,D as A,E as _e,G as Y,H as h,I as U,J as Le,K as se,L as Z,M as ne,N as Oe,O as Ge,P as Se,Q as Ue,R as je,S as ye,U as Ke,V as qe,W as Me,X as Ne,Y as Re,Z as We,$ as Ye,a0 as Je}from"./framework.477046d0.js";const Xe=g({__name:"VPBadge",props:{text:{},type:{default:"tip"}},setup(s){return(e,t)=>(a(),i("span",{class:C(["VPBadge",e.type])},[u(e.$slots,"default",{},()=>[x(L(e.text),1)],!0)],2))}});const Ze=m(Xe,[["__scopeId","data-v-394e4c62"]]),Qe={key:0,class:"VPBackdrop"},et=g({__name:"VPBackdrop",props:{show:{type:Boolean}},setup(s){return(e,t)=>(a(),$(ce,{name:"fade"},{default:v(()=>[e.show?(a(),i("div",Qe)):f("",!0)]),_:1}))}});const tt=m(et,[["__scopeId","data-v-da587472"]]),V=De;function st(s,e){let t,n=!1;return()=>{t&&clearTimeout(t),n?t=setTimeout(s,e):(s(),(n=!0)&&setTimeout(()=>n=!1,e))}}function re(s){return/^\//.test(s)?s:`/${s}`}function J(s){if(Ee(s))return s;const{site:e}=V(),{pathname:t,search:n,hash:o}=new URL(s,"http://a.com"),l=t.endsWith("/")||t.endsWith(".html")?s:s.replace(/(?:(^\.+)\/)?.*$/,`$1${t.replace(/(\.md)?$/,e.value.cleanUrls?"":".html")}${n}${o}`);return ue(l)}function X({removeCurrent:s=!0,correspondingLink:e=!1}={}){const{site:t,localeIndex:n,page:o,theme:l}=V(),d=P(()=>{var _,b;return{label:(_=t.value.locales[n.value])==null?void 0:_.label,link:((b=t.value.locales[n.value])==null?void 0:b.link)||(n.value==="root"?"/":`/${n.value}/`)}});return{localeLinks:P(()=>Object.entries(t.value.locales).flatMap(([_,b])=>s&&d.value.label===b.label?[]:{text:b.label,link:nt(b.link||(_==="root"?"/":`/${_}/`),l.value.i18nRouting!==!1&&e,o.value.relativePath.slice(d.value.link.length-1),!t.value.cleanUrls)})),currentLang:d}}function nt(s,e,t,n){return e?s.replace(/\/$/,"")+re(t.replace(/(^|\/)index\.md$/,"$1").replace(/\.md$/,n?".html":"")):s}const ot=s=>(H("data-v-f8580bb4"),s=s(),z(),s),at={class:"NotFound"},lt={class:"code"},rt={class:"title"},it=ot(()=>c("div",{class:"divider"},null,-1)),ct={class:"quote"},ut={class:"action"},dt=["href","aria-label"],_t=g({__name:"NotFound",setup(s){const{site:e,theme:t}=V(),{localeLinks:n}=X({removeCurrent:!1}),o=I("/");return K(()=>{var d;const l=window.location.pathname.replace(e.value.base,"").replace(/(^.*?\/).*$/,"/$1");n.value.length&&(o.value=((d=n.value.find(({link:p})=>p.startsWith(l)))==null?void 0:d.link)||n.value[0].link)}),(l,d)=>{var p,_,b,w,S;return a(),i("div",at,[c("p",lt,L(((p=r(t).notFound)==null?void 0:p.code)??"404"),1),c("h1",rt,L(((_=r(t).notFound)==null?void 0:_.title)??"PAGE NOT FOUND"),1),it,c("blockquote",ct,L(((b=r(t).notFound)==null?void 0:b.quote)??"But if you don't change your direction, and if you keep looking, you may end up where you are heading."),1),c("div",ut,[c("a",{class:"link",href:r(ue)(o.value),"aria-label":((w=r(t).notFound)==null?void 0:w.linkLabel)??"go to home"},L(((S=r(t).notFound)==null?void 0:S.linkText)??"Take me home"),9,dt)])])}}});const vt=m(_t,[["__scopeId","data-v-f8580bb4"]]);function Ie(s,e){if(Array.isArray(s))return Q(s);if(s==null)return[];e=re(e);const t=Object.keys(s).sort((o,l)=>l.split("/").length-o.split("/").length).find(o=>e.startsWith(re(o))),n=t?s[t]:[];return Array.isArray(n)?Q(n):Q(n.items,n.base)}function pt(s){const e=[];let t=0;for(const n in s){const o=s[n];if(o.items){t=e.push(o);continue}e[t]||e.push({items:[]}),e[t].items.push(o)}return e}function ht(s){const e=[];function t(n){for(const o of n)o.text&&o.link&&e.push({text:o.text,link:o.link,docFooterText:o.docFooterText}),o.items&&t(o.items)}return t(s),e}function ie(s,e){return Array.isArray(e)?e.some(t=>ie(s,t)):j(s,e.link)?!0:e.items?ie(s,e.items):!1}function Q(s,e){return[...s].map(t=>{const n={...t},o=n.base||e;return o&&n.link&&(n.link=o+n.link),n.items&&(n.items=Q(n.items,o)),n})}function F(){const{frontmatter:s,page:e,theme:t}=V(),n=le("(min-width: 960px)"),o=I(!1),l=P(()=>{const N=t.value.sidebar,y=e.value.relativePath;return N?Ie(N,y):[]}),d=I(l.value);q(l,(N,y)=>{JSON.stringify(N)!==JSON.stringify(y)&&(d.value=l.value)});const p=P(()=>s.value.sidebar!==!1&&d.value.length>0&&s.value.layout!=="home"),_=P(()=>b?s.value.aside==null?t.value.aside==="left":s.value.aside==="left":!1),b=P(()=>s.value.layout==="home"?!1:s.value.aside!=null?!!s.value.aside:t.value.aside!==!1),w=P(()=>p.value&&n.value),S=P(()=>p.value?pt(d.value):[]);function B(){o.value=!0}function k(){o.value=!1}function M(){o.value?k():B()}return{isOpen:o,sidebar:d,sidebarGroups:S,hasSidebar:p,hasAside:b,leftAside:_,isSidebarEnabled:w,open:B,close:k,toggle:M}}function ft(s,e){let t;te(()=>{t=s.value?document.activeElement:void 0}),K(()=>{window.addEventListener("keyup",n)}),de(()=>{window.removeEventListener("keyup",n)});function n(o){o.key==="Escape"&&s.value&&(e(),t==null||t.focus())}}const Te=I(W?location.hash:"");W&&window.addEventListener("hashchange",()=>{Te.value=location.hash});function mt(s){const{page:e}=V(),t=I(!1),n=P(()=>s.value.collapsed!=null),o=P(()=>!!s.value.link),l=I(!1),d=()=>{l.value=j(e.value.relativePath,s.value.link)};q([e,s,Te],d),K(d);const p=P(()=>l.value?!0:s.value.items?ie(e.value.relativePath,s.value.items):!1),_=P(()=>!!(s.value.items&&s.value.items.length));te(()=>{t.value=!!(n.value&&s.value.collapsed)}),we(()=>{(l.value||p.value)&&(t.value=!1)});function b(){n.value&&(t.value=!t.value)}return{collapsed:t,collapsible:n,isLink:o,isActiveLink:l,hasActiveLink:p,hasChildren:_,toggle:b}}function gt(){const{hasSidebar:s}=F(),e=le("(min-width: 960px)"),t=le("(min-width: 1280px)");return{isAsideEnabled:P(()=>!t.value&&!e.value?!1:s.value?t.value:e.value)}}const bt=71;function ve(s){return typeof s.outline=="object"&&!Array.isArray(s.outline)&&s.outline.label||s.outlineTitle||"On this page"}function pe(s){const e=[...document.querySelectorAll(".VPDoc :where(h1,h2,h3,h4,h5,h6)")].filter(t=>t.id&&t.hasChildNodes()).map(t=>{const n=Number(t.tagName[1]);return{title:$t(t),link:"#"+t.id,level:n}});return kt(e,s)}function $t(s){let e="";for(const t of s.childNodes)if(t.nodeType===1){if(t.classList.contains("VPBadge")||t.classList.contains("header-anchor"))continue;e+=t.textContent}else t.nodeType===3&&(e+=t.textContent);return e.trim()}function kt(s,e){if(e===!1)return[];const t=(typeof e=="object"&&!Array.isArray(e)?e.level:e)||2,[n,o]=typeof t=="number"?[t,t]:t==="deep"?[2,6]:t;s=s.filter(d=>d.level>=n&&d.level<=o);const l=[];e:for(let d=0;d=0;_--){const b=s[_];if(b.level{requestAnimationFrame(l),window.addEventListener("scroll",n)}),Fe(()=>{d(location.hash)}),de(()=>{window.removeEventListener("scroll",n)});function l(){if(!t.value)return;const p=[].slice.call(s.value.querySelectorAll(".outline-link")),_=[].slice.call(document.querySelectorAll(".content .header-anchor")).filter(k=>p.some(M=>M.hash===k.hash&&k.offsetParent!==null)),b=window.scrollY,w=window.innerHeight,S=document.body.offsetHeight,B=Math.abs(b+w-S)<1;if(_.length&&B){d(_[_.length-1].hash);return}for(let k=0;k<_.length;k++){const M=_[k],N=_[k+1],[y,D]=Pt(k,M,N);if(y){d(D);return}}}function d(p){o&&o.classList.remove("active"),p==null?o=null:o=s.value.querySelector(`a[href="${decodeURIComponent(p)}"]`);const _=o;_?(_.classList.add("active"),e.value.style.top=_.offsetTop+33+"px",e.value.style.opacity="1"):(e.value.style.top="33px",e.value.style.opacity="0")}}function Pe(s){return s.parentElement.offsetTop-bt}function Pt(s,e,t){const n=window.scrollY;return s===0&&n===0?[!0,null]:n{const o=R("VPDocOutlineItem",!0);return a(),i("ul",{class:C(t.root?"root":"nested")},[(a(!0),i(T,null,A(t.headers,({children:l,link:d,title:p})=>(a(),i("li",null,[c("a",{class:"outline-link",href:d,onClick:e,title:p},L(p),9,Vt),l!=null&&l.length?(a(),$(o,{key:0,headers:l},null,8,["headers"])):f("",!0)]))),256))],2)}}});const he=m(wt,[["__scopeId","data-v-c043bf3a"]]),Lt=s=>(H("data-v-832577d7"),s=s(),z(),s),St={class:"content"},Mt={class:"outline-title",role:"heading","aria-level":"2"},Nt={"aria-labelledby":"doc-outline-aria-label"},It=Lt(()=>c("span",{class:"visually-hidden",id:"doc-outline-aria-label"}," Table of Contents for current page ",-1)),Tt=g({__name:"VPDocAsideOutline",setup(s){const{frontmatter:e,theme:t}=V(),n=_e([]);Y(()=>{n.value=pe(e.value.outline??t.value.outline)});const o=I(),l=I();return yt(o,l),(d,p)=>(a(),i("div",{class:C(["VPDocAsideOutline",{"has-outline":n.value.length>0}]),ref_key:"container",ref:o,role:"navigation"},[c("div",St,[c("div",{class:"outline-marker",ref_key:"marker",ref:l},null,512),c("div",Mt,L(r(ve)(r(t))),1),c("nav",Nt,[It,h(he,{headers:n.value,root:!0},null,8,["headers"])])])],2))}});const Ct=m(Tt,[["__scopeId","data-v-832577d7"]]),Bt={class:"VPDocAsideCarbonAds"},At=g({__name:"VPDocAsideCarbonAds",props:{carbonAds:{}},setup(s){const e=()=>null;return(t,n)=>(a(),i("div",Bt,[h(r(e),{"carbon-ads":t.carbonAds},null,8,["carbon-ads"])]))}}),xt=s=>(H("data-v-59f2eefd"),s=s(),z(),s),Ht={class:"VPDocAside"},zt=xt(()=>c("div",{class:"spacer"},null,-1)),Dt=g({__name:"VPDocAside",setup(s){const{theme:e}=V();return(t,n)=>(a(),i("div",Ht,[u(t.$slots,"aside-top",{},void 0,!0),u(t.$slots,"aside-outline-before",{},void 0,!0),h(Ct),u(t.$slots,"aside-outline-after",{},void 0,!0),zt,u(t.$slots,"aside-ads-before",{},void 0,!0),r(e).carbonAds?(a(),$(At,{key:0,"carbon-ads":r(e).carbonAds},null,8,["carbon-ads"])):f("",!0),u(t.$slots,"aside-ads-after",{},void 0,!0),u(t.$slots,"aside-bottom",{},void 0,!0)]))}});const Et=m(Dt,[["__scopeId","data-v-59f2eefd"]]);function Ft(){const{theme:s,page:e}=V();return P(()=>{const{text:t="Edit this page",pattern:n=""}=s.value.editLink||{};let o;return typeof n=="function"?o=n(e.value):o=n.replace(/:path/g,e.value.filePath),{url:o,text:t}})}function Ot(){const{page:s,theme:e,frontmatter:t}=V();return P(()=>{var _,b,w,S,B,k,M,N;const n=Ie(e.value.sidebar,s.value.relativePath),o=ht(n),l=o.findIndex(y=>j(s.value.relativePath,y.link)),d=((_=e.value.docFooter)==null?void 0:_.prev)===!1&&!t.value.prev||t.value.prev===!1,p=((b=e.value.docFooter)==null?void 0:b.next)===!1&&!t.value.next||t.value.next===!1;return{prev:d?void 0:{text:(typeof t.value.prev=="string"?t.value.prev:typeof t.value.prev=="object"?t.value.prev.text:void 0)??((w=o[l-1])==null?void 0:w.docFooterText)??((S=o[l-1])==null?void 0:S.text),link:(typeof t.value.prev=="object"?t.value.prev.link:void 0)??((B=o[l-1])==null?void 0:B.link)},next:p?void 0:{text:(typeof t.value.next=="string"?t.value.next:typeof t.value.next=="object"?t.value.next.text:void 0)??((k=o[l+1])==null?void 0:k.docFooterText)??((M=o[l+1])==null?void 0:M.text),link:(typeof t.value.next=="object"?t.value.next.link:void 0)??((N=o[l+1])==null?void 0:N.link)}}})}const Gt={},Ut={xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},jt=c("path",{d:"M18,23H4c-1.7,0-3-1.3-3-3V6c0-1.7,1.3-3,3-3h7c0.6,0,1,0.4,1,1s-0.4,1-1,1H4C3.4,5,3,5.4,3,6v14c0,0.6,0.4,1,1,1h14c0.6,0,1-0.4,1-1v-7c0-0.6,0.4-1,1-1s1,0.4,1,1v7C21,21.7,19.7,23,18,23z"},null,-1),Kt=c("path",{d:"M8,17c-0.3,0-0.5-0.1-0.7-0.3C7,16.5,6.9,16.1,7,15.8l1-4c0-0.2,0.1-0.3,0.3-0.5l9.5-9.5c1.2-1.2,3.2-1.2,4.4,0c1.2,1.2,1.2,3.2,0,4.4l-9.5,9.5c-0.1,0.1-0.3,0.2-0.5,0.3l-4,1C8.2,17,8.1,17,8,17zM9.9,12.5l-0.5,2.1l2.1-0.5l9.3-9.3c0.4-0.4,0.4-1.1,0-1.6c-0.4-0.4-1.2-0.4-1.6,0l0,0L9.9,12.5z M18.5,2.5L18.5,2.5L18.5,2.5z"},null,-1),qt=[jt,Kt];function Rt(s,e){return a(),i("svg",Ut,qt)}const Wt=m(Gt,[["render",Rt]]),G=g({__name:"VPLink",props:{tag:{},href:{},noIcon:{type:Boolean},target:{},rel:{}},setup(s){const e=s,t=P(()=>e.tag??(e.href?"a":"span")),n=P(()=>e.href&&Le.test(e.href));return(o,l)=>(a(),$(U(t.value),{class:C(["VPLink",{link:o.href,"vp-external-link-icon":n.value,"no-icon":o.noIcon}]),href:o.href?r(J)(o.href):void 0,target:o.target??(n.value?"_blank":void 0),rel:o.rel??(n.value?"noreferrer":void 0)},{default:v(()=>[u(o.$slots,"default")]),_:3},8,["class","href","target","rel"]))}}),Yt={class:"VPLastUpdated"},Jt=["datetime"],Xt=g({__name:"VPDocFooterLastUpdated",setup(s){const{theme:e,page:t,frontmatter:n,lang:o}=V(),l=P(()=>new Date(n.value.lastUpdated??t.value.lastUpdated)),d=P(()=>l.value.toISOString()),p=I("");return K(()=>{te(()=>{var _,b,w;p.value=new Intl.DateTimeFormat((b=(_=e.value.lastUpdated)==null?void 0:_.formatOptions)!=null&&b.forceLocale?o.value:void 0,((w=e.value.lastUpdated)==null?void 0:w.formatOptions)??{dateStyle:"short",timeStyle:"short"}).format(l.value)})}),(_,b)=>{var w;return a(),i("p",Yt,[x(L(((w=r(e).lastUpdated)==null?void 0:w.text)||r(e).lastUpdatedText||"Last updated")+": ",1),c("time",{datetime:d.value},L(p.value),9,Jt)])}}});const Zt=m(Xt,[["__scopeId","data-v-82edb21a"]]),Qt={key:0,class:"VPDocFooter"},es={key:0,class:"edit-info"},ts={key:0,class:"edit-link"},ss={key:1,class:"last-updated"},ns={key:1,class:"prev-next"},os={class:"pager"},as=["href"],ls=["innerHTML"],rs=["innerHTML"],is={class:"pager"},cs=["href"],us=["innerHTML"],ds=["innerHTML"],_s=g({__name:"VPDocFooter",setup(s){const{theme:e,page:t,frontmatter:n}=V(),o=Ft(),l=Ot(),d=P(()=>e.value.editLink&&n.value.editLink!==!1),p=P(()=>t.value.lastUpdated&&n.value.lastUpdated!==!1),_=P(()=>d.value||p.value||l.value.prev||l.value.next);return(b,w)=>{var S,B,k,M,N,y;return _.value?(a(),i("footer",Qt,[u(b.$slots,"doc-footer-before",{},void 0,!0),d.value||p.value?(a(),i("div",es,[d.value?(a(),i("div",ts,[h(G,{class:"edit-link-button",href:r(o).url,"no-icon":!0},{default:v(()=>[h(Wt,{class:"edit-link-icon","aria-label":"edit icon"}),x(" "+L(r(o).text),1)]),_:1},8,["href"])])):f("",!0),p.value?(a(),i("div",ss,[h(Zt)])):f("",!0)])):f("",!0),(S=r(l).prev)!=null&&S.link||(B=r(l).next)!=null&&B.link?(a(),i("nav",ns,[c("div",os,[(k=r(l).prev)!=null&&k.link?(a(),i("a",{key:0,class:"pager-link prev",href:r(J)(r(l).prev.link)},[c("span",{class:"desc",innerHTML:((M=r(e).docFooter)==null?void 0:M.prev)||"Previous page"},null,8,ls),c("span",{class:"title",innerHTML:r(l).prev.text},null,8,rs)],8,as)):f("",!0)]),c("div",is,[(N=r(l).next)!=null&&N.link?(a(),i("a",{key:0,class:"pager-link next",href:r(J)(r(l).next.link)},[c("span",{class:"desc",innerHTML:((y=r(e).docFooter)==null?void 0:y.next)||"Next page"},null,8,us),c("span",{class:"title",innerHTML:r(l).next.text},null,8,ds)],8,cs)):f("",!0)])])):f("",!0)])):f("",!0)}}});const vs=m(_s,[["__scopeId","data-v-93d7bb42"]]),ps={},hs={xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false",viewBox:"0 0 24 24"},fs=c("path",{d:"M9,19c-0.3,0-0.5-0.1-0.7-0.3c-0.4-0.4-0.4-1,0-1.4l5.3-5.3L8.3,6.7c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l6,6c0.4,0.4,0.4,1,0,1.4l-6,6C9.5,18.9,9.3,19,9,19z"},null,-1),ms=[fs];function gs(s,e){return a(),i("svg",hs,ms)}const fe=m(ps,[["render",gs]]),bs={key:0,class:"VPDocOutlineDropdown"},$s={key:0,class:"items"},ks=g({__name:"VPDocOutlineDropdown",setup(s){const{frontmatter:e,theme:t}=V(),n=I(!1);Y(()=>{n.value=!1});const o=_e([]);return Y(()=>{o.value=pe(e.value.outline??t.value.outline)}),(l,d)=>o.value.length>0?(a(),i("div",bs,[c("button",{onClick:d[0]||(d[0]=p=>n.value=!n.value),class:C({open:n.value})},[x(L(r(ve)(r(t)))+" ",1),h(fe,{class:"icon"})],2),n.value?(a(),i("div",$s,[h(he,{headers:o.value},null,8,["headers"])])):f("",!0)])):f("",!0)}});const ys=m(ks,[["__scopeId","data-v-29293128"]]),Ps=s=>(H("data-v-0484986b"),s=s(),z(),s),Vs={class:"container"},ws=Ps(()=>c("div",{class:"aside-curtain"},null,-1)),Ls={class:"aside-container"},Ss={class:"aside-content"},Ms={class:"content"},Ns={class:"content-container"},Is={class:"main"},Ts=g({__name:"VPDoc",setup(s){const{theme:e}=V(),t=se(),{hasSidebar:n,hasAside:o,leftAside:l}=F(),d=P(()=>t.path.replace(/[./]+/g,"_").replace(/_html$/,""));return(p,_)=>{const b=R("Content");return a(),i("div",{class:C(["VPDoc",{"has-sidebar":r(n),"has-aside":r(o)}])},[u(p.$slots,"doc-top",{},void 0,!0),c("div",Vs,[r(o)?(a(),i("div",{key:0,class:C(["aside",{"left-aside":r(l)}])},[ws,c("div",Ls,[c("div",Ss,[h(Et,null,{"aside-top":v(()=>[u(p.$slots,"aside-top",{},void 0,!0)]),"aside-bottom":v(()=>[u(p.$slots,"aside-bottom",{},void 0,!0)]),"aside-outline-before":v(()=>[u(p.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":v(()=>[u(p.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":v(()=>[u(p.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":v(()=>[u(p.$slots,"aside-ads-after",{},void 0,!0)]),_:3})])])],2)):f("",!0),c("div",Ms,[c("div",Ns,[u(p.$slots,"doc-before",{},void 0,!0),h(ys),c("main",Is,[h(b,{class:C(["vp-doc",[d.value,r(e).externalLinkIcon&&"external-link-icon-enabled"]])},null,8,["class"])]),h(vs,null,{"doc-footer-before":v(()=>[u(p.$slots,"doc-footer-before",{},void 0,!0)]),_:3}),u(p.$slots,"doc-after",{},void 0,!0)])])]),u(p.$slots,"doc-bottom",{},void 0,!0)],2)}}});const Cs=m(Ts,[["__scopeId","data-v-0484986b"]]),Bs=g({__name:"VPButton",props:{tag:{},size:{default:"medium"},theme:{default:"brand"},text:{},href:{}},setup(s){const e=s,t=P(()=>e.href&&Le.test(e.href)),n=P(()=>e.tag||e.href?"a":"button");return(o,l)=>(a(),$(U(n.value),{class:C(["VPButton",[o.size,o.theme]]),href:o.href?r(J)(o.href):void 0,target:t.value?"_blank":void 0,rel:t.value?"noreferrer":void 0},{default:v(()=>[x(L(o.text),1)]),_:1},8,["class","href","target","rel"]))}});const As=m(Bs,[["__scopeId","data-v-ccb90d73"]]),xs=["src","alt"],Hs=g({inheritAttrs:!1,__name:"VPImage",props:{image:{},alt:{}},setup(s){return(e,t)=>{const n=R("VPImage",!0);return e.image?(a(),i(T,{key:0},[typeof e.image=="string"||"src"in e.image?(a(),i("img",Z({key:0,class:"VPImage"},typeof e.image=="string"?e.$attrs:{...e.image,...e.$attrs},{src:r(ue)(typeof e.image=="string"?e.image:e.image.src),alt:e.alt??(typeof e.image=="string"?"":e.image.alt||"")}),null,16,xs)):(a(),i(T,{key:1},[h(n,Z({class:"dark",image:e.image.dark,alt:e.image.alt},e.$attrs),null,16,["image","alt"]),h(n,Z({class:"light",image:e.image.light,alt:e.image.alt},e.$attrs),null,16,["image","alt"])],64))],64)):f("",!0)}}});const ee=m(Hs,[["__scopeId","data-v-1a473120"]]),zs=s=>(H("data-v-9f4ba9bd"),s=s(),z(),s),Ds={class:"container"},Es={class:"main"},Fs={key:0,class:"name"},Os=["innerHTML"],Gs=["innerHTML"],Us=["innerHTML"],js={key:0,class:"actions"},Ks={key:0,class:"image"},qs={class:"image-container"},Rs=zs(()=>c("div",{class:"image-bg"},null,-1)),Ws=g({__name:"VPHero",props:{name:{},text:{},tagline:{},image:{},actions:{}},setup(s){const e=ne("hero-image-slot-exists");return(t,n)=>(a(),i("div",{class:C(["VPHero",{"has-image":t.image||r(e)}])},[c("div",Ds,[c("div",Es,[u(t.$slots,"home-hero-info",{},()=>[t.name?(a(),i("h1",Fs,[c("span",{innerHTML:t.name,class:"clip"},null,8,Os)])):f("",!0),t.text?(a(),i("p",{key:1,innerHTML:t.text,class:"text"},null,8,Gs)):f("",!0),t.tagline?(a(),i("p",{key:2,innerHTML:t.tagline,class:"tagline"},null,8,Us)):f("",!0)],!0),t.actions?(a(),i("div",js,[(a(!0),i(T,null,A(t.actions,o=>(a(),i("div",{key:o.link,class:"action"},[h(As,{tag:"a",size:"medium",theme:o.theme,text:o.text,href:o.link},null,8,["theme","text","href"])]))),128))])):f("",!0)]),t.image||r(e)?(a(),i("div",Ks,[c("div",qs,[Rs,u(t.$slots,"home-hero-image",{},()=>[t.image?(a(),$(ee,{key:0,class:"image-src",image:t.image},null,8,["image"])):f("",!0)],!0)])])):f("",!0)])],2))}});const Ys=m(Ws,[["__scopeId","data-v-9f4ba9bd"]]),Js=g({__name:"VPHomeHero",setup(s){const{frontmatter:e}=V();return(t,n)=>r(e).hero?(a(),$(Ys,{key:0,class:"VPHomeHero",name:r(e).hero.name,text:r(e).hero.text,tagline:r(e).hero.tagline,image:r(e).hero.image,actions:r(e).hero.actions},{"home-hero-info":v(()=>[u(t.$slots,"home-hero-info")]),"home-hero-image":v(()=>[u(t.$slots,"home-hero-image")]),_:3},8,["name","text","tagline","image","actions"])):f("",!0)}}),Xs={},Zs={xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24"},Qs=c("path",{d:"M19.9,12.4c0.1-0.2,0.1-0.5,0-0.8c-0.1-0.1-0.1-0.2-0.2-0.3l-7-7c-0.4-0.4-1-0.4-1.4,0s-0.4,1,0,1.4l5.3,5.3H5c-0.6,0-1,0.4-1,1s0.4,1,1,1h11.6l-5.3,5.3c-0.4,0.4-0.4,1,0,1.4c0.2,0.2,0.5,0.3,0.7,0.3s0.5-0.1,0.7-0.3l7-7C19.8,12.6,19.9,12.5,19.9,12.4z"},null,-1),en=[Qs];function tn(s,e){return a(),i("svg",Zs,en)}const sn=m(Xs,[["render",tn]]),nn={class:"box"},on={key:0,class:"icon"},an=["innerHTML"],ln=["innerHTML"],rn=["innerHTML"],cn={key:4,class:"link-text"},un={class:"link-text-value"},dn=g({__name:"VPFeature",props:{icon:{},title:{},details:{},link:{},linkText:{},rel:{},target:{}},setup(s){return(e,t)=>(a(),$(G,{class:"VPFeature",href:e.link,rel:e.rel,target:e.target,"no-icon":!0,tag:e.link?"a":"div"},{default:v(()=>[c("article",nn,[typeof e.icon=="object"&&e.icon.wrap?(a(),i("div",on,[h(ee,{image:e.icon,alt:e.icon.alt,height:e.icon.height||48,width:e.icon.width||48},null,8,["image","alt","height","width"])])):typeof e.icon=="object"?(a(),$(ee,{key:1,image:e.icon,alt:e.icon.alt,height:e.icon.height||48,width:e.icon.width||48},null,8,["image","alt","height","width"])):e.icon?(a(),i("div",{key:2,class:"icon",innerHTML:e.icon},null,8,an)):f("",!0),c("h2",{class:"title",innerHTML:e.title},null,8,ln),e.details?(a(),i("p",{key:3,class:"details",innerHTML:e.details},null,8,rn)):f("",!0),e.linkText?(a(),i("div",cn,[c("p",un,[x(L(e.linkText)+" ",1),h(sn,{class:"link-text-icon"})])])):f("",!0)])]),_:1},8,["href","rel","target","tag"]))}});const _n=m(dn,[["__scopeId","data-v-484eeed2"]]),vn={key:0,class:"VPFeatures"},pn={class:"container"},hn={class:"items"},fn=g({__name:"VPFeatures",props:{features:{}},setup(s){const e=s,t=P(()=>{const n=e.features.length;if(n){if(n===2)return"grid-2";if(n===3)return"grid-3";if(n%3===0)return"grid-6";if(n>3)return"grid-4"}else return});return(n,o)=>n.features?(a(),i("div",vn,[c("div",pn,[c("div",hn,[(a(!0),i(T,null,A(n.features,l=>(a(),i("div",{key:l.title,class:C(["item",[t.value]])},[h(_n,{icon:l.icon,title:l.title,details:l.details,link:l.link,"link-text":l.linkText,rel:l.rel,target:l.target},null,8,["icon","title","details","link","link-text","rel","target"])],2))),128))])])])):f("",!0)}});const mn=m(fn,[["__scopeId","data-v-a4ebea2b"]]),gn=g({__name:"VPHomeFeatures",setup(s){const{frontmatter:e}=V();return(t,n)=>r(e).features?(a(),$(mn,{key:0,class:"VPHomeFeatures",features:r(e).features},null,8,["features"])):f("",!0)}}),bn={class:"VPHome"},$n=g({__name:"VPHome",setup(s){return(e,t)=>{const n=R("Content");return a(),i("div",bn,[u(e.$slots,"home-hero-before",{},void 0,!0),h(Js,null,{"home-hero-info":v(()=>[u(e.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-image":v(()=>[u(e.$slots,"home-hero-image",{},void 0,!0)]),_:3}),u(e.$slots,"home-hero-after",{},void 0,!0),u(e.$slots,"home-features-before",{},void 0,!0),h(gn),u(e.$slots,"home-features-after",{},void 0,!0),h(n)])}}});const kn=m($n,[["__scopeId","data-v-26209f9b"]]),yn={},Pn={class:"VPPage"};function Vn(s,e){const t=R("Content");return a(),i("div",Pn,[u(s.$slots,"page-top"),h(t),u(s.$slots,"page-bottom")])}const wn=m(yn,[["render",Vn]]),Ln=g({__name:"VPContent",setup(s){const{page:e,frontmatter:t}=V(),{hasSidebar:n}=F();return(o,l)=>(a(),i("div",{class:C(["VPContent",{"has-sidebar":r(n),"is-home":r(t).layout==="home"}]),id:"VPContent"},[r(e).isNotFound?u(o.$slots,"not-found",{key:0},()=>[h(vt)],!0):r(t).layout==="page"?(a(),$(wn,{key:1},{"page-top":v(()=>[u(o.$slots,"page-top",{},void 0,!0)]),"page-bottom":v(()=>[u(o.$slots,"page-bottom",{},void 0,!0)]),_:3})):r(t).layout==="home"?(a(),$(kn,{key:2},{"home-hero-before":v(()=>[u(o.$slots,"home-hero-before",{},void 0,!0)]),"home-hero-info":v(()=>[u(o.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-image":v(()=>[u(o.$slots,"home-hero-image",{},void 0,!0)]),"home-hero-after":v(()=>[u(o.$slots,"home-hero-after",{},void 0,!0)]),"home-features-before":v(()=>[u(o.$slots,"home-features-before",{},void 0,!0)]),"home-features-after":v(()=>[u(o.$slots,"home-features-after",{},void 0,!0)]),_:3})):r(t).layout&&r(t).layout!=="doc"?(a(),$(U(r(t).layout),{key:3})):(a(),$(Cs,{key:4},{"doc-top":v(()=>[u(o.$slots,"doc-top",{},void 0,!0)]),"doc-bottom":v(()=>[u(o.$slots,"doc-bottom",{},void 0,!0)]),"doc-footer-before":v(()=>[u(o.$slots,"doc-footer-before",{},void 0,!0)]),"doc-before":v(()=>[u(o.$slots,"doc-before",{},void 0,!0)]),"doc-after":v(()=>[u(o.$slots,"doc-after",{},void 0,!0)]),"aside-top":v(()=>[u(o.$slots,"aside-top",{},void 0,!0)]),"aside-outline-before":v(()=>[u(o.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":v(()=>[u(o.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":v(()=>[u(o.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":v(()=>[u(o.$slots,"aside-ads-after",{},void 0,!0)]),"aside-bottom":v(()=>[u(o.$slots,"aside-bottom",{},void 0,!0)]),_:3}))],2))}});const Sn=m(Ln,[["__scopeId","data-v-2b03cc39"]]),Mn={class:"container"},Nn=["innerHTML"],In=["innerHTML"],Tn=g({__name:"VPFooter",setup(s){const{theme:e,frontmatter:t}=V(),{hasSidebar:n}=F();return(o,l)=>r(e).footer&&r(t).footer!==!1?(a(),i("footer",{key:0,class:C(["VPFooter",{"has-sidebar":r(n)}])},[c("div",Mn,[r(e).footer.message?(a(),i("p",{key:0,class:"message",innerHTML:r(e).footer.message},null,8,Nn)):f("",!0),r(e).footer.copyright?(a(),i("p",{key:1,class:"copyright",innerHTML:r(e).footer.copyright},null,8,In)):f("",!0)])],2)):f("",!0)}});const Cn=m(Tn,[["__scopeId","data-v-8a6e0bb4"]]),Bn={class:"header"},An={class:"outline"},xn=g({__name:"VPLocalNavOutlineDropdown",props:{headers:{},navHeight:{}},setup(s){const e=s,{theme:t}=V(),n=I(!1),o=I(0),l=I();Y(()=>{n.value=!1});function d(){n.value=!n.value,o.value=window.innerHeight+Math.min(window.scrollY-e.navHeight,0)}function p(b){b.target.classList.contains("outline-link")&&(l.value&&(l.value.style.transition="none"),Ge(()=>{n.value=!1}))}function _(){n.value=!1,window.scrollTo({top:0,left:0,behavior:"smooth"})}return(b,w)=>(a(),i("div",{class:"VPLocalNavOutlineDropdown",style:Oe({"--vp-vh":o.value+"px"})},[b.headers.length>0?(a(),i("button",{key:0,onClick:d,class:C({open:n.value})},[x(L(r(ve)(r(t)))+" ",1),h(fe,{class:"icon"})],2)):(a(),i("button",{key:1,onClick:_},L(r(t).returnToTopLabel||"Return to top"),1)),h(ce,{name:"flyout"},{default:v(()=>[n.value?(a(),i("div",{key:0,ref_key:"items",ref:l,class:"items",onClick:p},[c("div",Bn,[c("a",{class:"top-link",href:"#",onClick:_},L(r(t).returnToTopLabel||"Return to top"),1)]),c("div",An,[h(he,{headers:b.headers},null,8,["headers"])])],512)):f("",!0)]),_:1})],4))}});const Hn=m(xn,[["__scopeId","data-v-885e757a"]]),zn={},Dn={xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false",viewBox:"0 0 24 24"},En=c("path",{d:"M17,11H3c-0.6,0-1-0.4-1-1s0.4-1,1-1h14c0.6,0,1,0.4,1,1S17.6,11,17,11z"},null,-1),Fn=c("path",{d:"M21,7H3C2.4,7,2,6.6,2,6s0.4-1,1-1h18c0.6,0,1,0.4,1,1S21.6,7,21,7z"},null,-1),On=c("path",{d:"M21,15H3c-0.6,0-1-0.4-1-1s0.4-1,1-1h18c0.6,0,1,0.4,1,1S21.6,15,21,15z"},null,-1),Gn=c("path",{d:"M17,19H3c-0.6,0-1-0.4-1-1s0.4-1,1-1h14c0.6,0,1,0.4,1,1S17.6,19,17,19z"},null,-1),Un=[En,Fn,On,Gn];function jn(s,e){return a(),i("svg",Dn,Un)}const Kn=m(zn,[["render",jn]]),qn=["aria-expanded"],Rn={class:"menu-text"},Wn=g({__name:"VPLocalNav",props:{open:{type:Boolean}},emits:["open-menu"],setup(s){const{theme:e,frontmatter:t}=V(),{hasSidebar:n}=F(),{y:o}=Se(),l=_e([]),d=I(0);K(()=>{d.value=parseInt(getComputedStyle(document.documentElement).getPropertyValue("--vp-nav-height"))}),Y(()=>{l.value=pe(t.value.outline??e.value.outline)});const p=P(()=>l.value.length===0&&!n.value),_=P(()=>({VPLocalNav:!0,fixed:p.value,"reached-top":o.value>=d.value}));return(b,w)=>r(t).layout!=="home"&&(!p.value||r(o)>=d.value)?(a(),i("div",{key:0,class:C(_.value)},[r(n)?(a(),i("button",{key:0,class:"menu","aria-expanded":b.open,"aria-controls":"VPSidebarNav",onClick:w[0]||(w[0]=S=>b.$emit("open-menu"))},[h(Kn,{class:"menu-icon"}),c("span",Rn,L(r(e).sidebarMenuLabel||"Menu"),1)],8,qn)):f("",!0),h(Hn,{headers:l.value,navHeight:d.value},null,8,["headers","navHeight"])],2)):f("",!0)}});const Yn=m(Wn,[["__scopeId","data-v-d3e292f7"]]);function Jn(){const s=I(!1);function e(){s.value=!0,window.addEventListener("resize",o)}function t(){s.value=!1,window.removeEventListener("resize",o)}function n(){s.value?t():e()}function o(){window.outerWidth>=768&&t()}const l=se();return q(()=>l.path,t),{isScreenOpen:s,openScreen:e,closeScreen:t,toggleScreen:n}}const Xn={},Zn={class:"VPSwitch",type:"button",role:"switch"},Qn={class:"check"},eo={key:0,class:"icon"};function to(s,e){return a(),i("button",Zn,[c("span",Qn,[s.$slots.default?(a(),i("span",eo,[u(s.$slots,"default",{},void 0,!0)])):f("",!0)])])}const so=m(Xn,[["render",to],["__scopeId","data-v-979c26e2"]]),no={},oo={xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false",viewBox:"0 0 24 24"},ao=c("path",{d:"M12.1,22c-0.3,0-0.6,0-0.9,0c-5.5-0.5-9.5-5.4-9-10.9c0.4-4.8,4.2-8.6,9-9c0.4,0,0.8,0.2,1,0.5c0.2,0.3,0.2,0.8-0.1,1.1c-2,2.7-1.4,6.4,1.3,8.4c2.1,1.6,5,1.6,7.1,0c0.3-0.2,0.7-0.3,1.1-0.1c0.3,0.2,0.5,0.6,0.5,1c-0.2,2.7-1.5,5.1-3.6,6.8C16.6,21.2,14.4,22,12.1,22zM9.3,4.4c-2.9,1-5,3.6-5.2,6.8c-0.4,4.4,2.8,8.3,7.2,8.7c2.1,0.2,4.2-0.4,5.8-1.8c1.1-0.9,1.9-2.1,2.4-3.4c-2.5,0.9-5.3,0.5-7.5-1.1C9.2,11.4,8.1,7.7,9.3,4.4z"},null,-1),lo=[ao];function ro(s,e){return a(),i("svg",oo,lo)}const io=m(no,[["render",ro]]),co={},uo={xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false",viewBox:"0 0 24 24"},_o=Ue('',9),vo=[_o];function po(s,e){return a(),i("svg",uo,vo)}const ho=m(co,[["render",po]]),fo=g({__name:"VPSwitchAppearance",setup(s){const{isDark:e}=V(),t=ne("toggle-appearance",()=>{e.value=!e.value});return(n,o)=>(a(),$(so,{title:"toggle dark mode",class:"VPSwitchAppearance","aria-checked":r(e),onClick:r(t)},{default:v(()=>[h(ho,{class:"sun"}),h(io,{class:"moon"})]),_:1},8,["aria-checked","onClick"]))}});const me=m(fo,[["__scopeId","data-v-fb67176c"]]),mo={key:0,class:"VPNavBarAppearance"},go=g({__name:"VPNavBarAppearance",setup(s){const{site:e}=V();return(t,n)=>r(e).appearance&&r(e).appearance!=="force-dark"?(a(),i("div",mo,[h(me)])):f("",!0)}});const bo=m(go,[["__scopeId","data-v-1b34bacc"]]),ge=I();let Ce=!1,ae=0;function $o(s){const e=I(!1);if(W){!Ce&&ko(),ae++;const t=q(ge,n=>{var o,l,d;n===s.el.value||(o=s.el.value)!=null&&o.contains(n)?(e.value=!0,(l=s.onFocus)==null||l.call(s)):(e.value=!1,(d=s.onBlur)==null||d.call(s))});de(()=>{t(),ae--,ae||yo()})}return je(e)}function ko(){document.addEventListener("focusin",Be),Ce=!0,ge.value=document.activeElement}function yo(){document.removeEventListener("focusin",Be)}function Be(){ge.value=document.activeElement}const Po={},Vo={xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false",viewBox:"0 0 24 24"},wo=c("path",{d:"M12,16c-0.3,0-0.5-0.1-0.7-0.3l-6-6c-0.4-0.4-0.4-1,0-1.4s1-0.4,1.4,0l5.3,5.3l5.3-5.3c0.4-0.4,1-0.4,1.4,0s0.4,1,0,1.4l-6,6C12.5,15.9,12.3,16,12,16z"},null,-1),Lo=[wo];function So(s,e){return a(),i("svg",Vo,Lo)}const Ae=m(Po,[["render",So]]),Mo={},No={xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false",viewBox:"0 0 24 24"},Io=c("circle",{cx:"12",cy:"12",r:"2"},null,-1),To=c("circle",{cx:"19",cy:"12",r:"2"},null,-1),Co=c("circle",{cx:"5",cy:"12",r:"2"},null,-1),Bo=[Io,To,Co];function Ao(s,e){return a(),i("svg",No,Bo)}const xo=m(Mo,[["render",Ao]]),Ho={class:"VPMenuLink"},zo=g({__name:"VPMenuLink",props:{item:{}},setup(s){const{page:e}=V();return(t,n)=>(a(),i("div",Ho,[h(G,{class:C({active:r(j)(r(e).relativePath,t.item.activeMatch||t.item.link,!!t.item.activeMatch)}),href:t.item.link,target:t.item.target,rel:t.item.rel},{default:v(()=>[x(L(t.item.text),1)]),_:1},8,["class","href","target","rel"])]))}});const oe=m(zo,[["__scopeId","data-v-f34060c4"]]),Do={class:"VPMenuGroup"},Eo={key:0,class:"title"},Fo=g({__name:"VPMenuGroup",props:{text:{},items:{}},setup(s){return(e,t)=>(a(),i("div",Do,[e.text?(a(),i("p",Eo,L(e.text),1)):f("",!0),(a(!0),i(T,null,A(e.items,n=>(a(),i(T,null,["link"in n?(a(),$(oe,{key:0,item:n},null,8,["item"])):f("",!0)],64))),256))]))}});const Oo=m(Fo,[["__scopeId","data-v-d9d9a1a9"]]),Go={class:"VPMenu"},Uo={key:0,class:"items"},jo=g({__name:"VPMenu",props:{items:{}},setup(s){return(e,t)=>(a(),i("div",Go,[e.items?(a(),i("div",Uo,[(a(!0),i(T,null,A(e.items,n=>(a(),i(T,{key:n.text},["link"in n?(a(),$(oe,{key:0,item:n},null,8,["item"])):(a(),$(Oo,{key:1,text:n.text,items:n.items},null,8,["text","items"]))],64))),128))])):f("",!0),u(e.$slots,"default",{},void 0,!0)]))}});const Ko=m(jo,[["__scopeId","data-v-b93937a4"]]),qo=["aria-expanded","aria-label"],Ro={key:0,class:"text"},Wo=["innerHTML"],Yo={class:"menu"},Jo=g({__name:"VPFlyout",props:{icon:{},button:{},label:{},items:{}},setup(s){const e=I(!1),t=I();$o({el:t,onBlur:n});function n(){e.value=!1}return(o,l)=>(a(),i("div",{class:"VPFlyout",ref_key:"el",ref:t,onMouseenter:l[1]||(l[1]=d=>e.value=!0),onMouseleave:l[2]||(l[2]=d=>e.value=!1)},[c("button",{type:"button",class:"button","aria-haspopup":"true","aria-expanded":e.value,"aria-label":o.label,onClick:l[0]||(l[0]=d=>e.value=!e.value)},[o.button||o.icon?(a(),i("span",Ro,[o.icon?(a(),$(U(o.icon),{key:0,class:"option-icon"})):f("",!0),o.button?(a(),i("span",{key:1,innerHTML:o.button},null,8,Wo)):f("",!0),h(Ae,{class:"text-icon"})])):(a(),$(xo,{key:1,class:"icon"}))],8,qo),c("div",Yo,[h(Ko,{items:o.items},{default:v(()=>[u(o.$slots,"default",{},void 0,!0)]),_:3},8,["items"])])],544))}});const be=m(Jo,[["__scopeId","data-v-e68c2038"]]),Xo={discord:'Discord',facebook:'Facebook',github:'GitHub',instagram:'Instagram',linkedin:'LinkedIn',mastodon:'Mastodon',slack:'Slack',twitter:'Twitter',x:'X',youtube:'YouTube'},Zo=["href","aria-label","innerHTML"],Qo=g({__name:"VPSocialLink",props:{icon:{},link:{},ariaLabel:{}},setup(s){const e=s,t=P(()=>typeof e.icon=="object"?e.icon.svg:Xo[e.icon]);return(n,o)=>(a(),i("a",{class:"VPSocialLink no-icon",href:n.link,"aria-label":n.ariaLabel??(typeof n.icon=="string"?n.icon:""),target:"_blank",rel:"noopener",innerHTML:t.value},null,8,Zo))}});const ea=m(Qo,[["__scopeId","data-v-89712794"]]),ta={class:"VPSocialLinks"},sa=g({__name:"VPSocialLinks",props:{links:{}},setup(s){return(e,t)=>(a(),i("div",ta,[(a(!0),i(T,null,A(e.links,({link:n,icon:o,ariaLabel:l})=>(a(),$(ea,{key:n,icon:o,link:n,ariaLabel:l},null,8,["icon","link","ariaLabel"]))),128))]))}});const $e=m(sa,[["__scopeId","data-v-75d6f2f5"]]),na={key:0,class:"group translations"},oa={class:"trans-title"},aa={key:1,class:"group"},la={class:"item appearance"},ra={class:"label"},ia={class:"appearance-action"},ca={key:2,class:"group"},ua={class:"item social-links"},da=g({__name:"VPNavBarExtra",setup(s){const{site:e,theme:t}=V(),{localeLinks:n,currentLang:o}=X({correspondingLink:!0}),l=P(()=>n.value.length&&o.value.label||e.value.appearance||t.value.socialLinks);return(d,p)=>l.value?(a(),$(be,{key:0,class:"VPNavBarExtra",label:"extra navigation"},{default:v(()=>[r(n).length&&r(o).label?(a(),i("div",na,[c("p",oa,L(r(o).label),1),(a(!0),i(T,null,A(r(n),_=>(a(),$(oe,{key:_.link,item:_},null,8,["item"]))),128))])):f("",!0),r(e).appearance?(a(),i("div",aa,[c("div",la,[c("p",ra,L(r(t).darkModeSwitchLabel||"Appearance"),1),c("div",ia,[h(me)])])])):f("",!0),r(t).socialLinks?(a(),i("div",ca,[c("div",ua,[h($e,{class:"social-links-list",links:r(t).socialLinks},null,8,["links"])])])):f("",!0)]),_:1})):f("",!0)}});const _a=m(da,[["__scopeId","data-v-754c055d"]]),va=s=>(H("data-v-c70218b2"),s=s(),z(),s),pa=["aria-expanded"],ha=va(()=>c("span",{class:"container"},[c("span",{class:"top"}),c("span",{class:"middle"}),c("span",{class:"bottom"})],-1)),fa=[ha],ma=g({__name:"VPNavBarHamburger",props:{active:{type:Boolean}},emits:["click"],setup(s){return(e,t)=>(a(),i("button",{type:"button",class:C(["VPNavBarHamburger",{active:e.active}]),"aria-label":"mobile navigation","aria-expanded":e.active,"aria-controls":"VPNavScreen",onClick:t[0]||(t[0]=n=>e.$emit("click"))},fa,10,pa))}});const ga=m(ma,[["__scopeId","data-v-c70218b2"]]),ba=["innerHTML"],$a=g({__name:"VPNavBarMenuLink",props:{item:{}},setup(s){const{page:e}=V();return(t,n)=>(a(),$(G,{class:C({VPNavBarMenuLink:!0,active:r(j)(r(e).relativePath,t.item.activeMatch||t.item.link,!!t.item.activeMatch)}),href:t.item.link,target:t.item.target,rel:t.item.rel,tabindex:"0"},{default:v(()=>[c("span",{innerHTML:t.item.text},null,8,ba)]),_:1},8,["class","href","target","rel"]))}});const ka=m($a,[["__scopeId","data-v-f7d34d3c"]]),ya=g({__name:"VPNavBarMenuGroup",props:{item:{}},setup(s){const e=s,{page:t}=V(),n=l=>"link"in l?j(t.value.relativePath,l.link,!!e.item.activeMatch):l.items.some(n),o=P(()=>n(e.item));return(l,d)=>(a(),$(be,{class:C({VPNavBarMenuGroup:!0,active:r(j)(r(t).relativePath,l.item.activeMatch,!!l.item.activeMatch)||o.value}),button:l.item.text,items:l.item.items},null,8,["class","button","items"]))}}),Pa=s=>(H("data-v-344279fb"),s=s(),z(),s),Va={key:0,"aria-labelledby":"main-nav-aria-label",class:"VPNavBarMenu"},wa=Pa(()=>c("span",{id:"main-nav-aria-label",class:"visually-hidden"},"Main Navigation",-1)),La=g({__name:"VPNavBarMenu",setup(s){const{theme:e}=V();return(t,n)=>r(e).nav?(a(),i("nav",Va,[wa,(a(!0),i(T,null,A(r(e).nav,o=>(a(),i(T,{key:o.text},["link"in o?(a(),$(ka,{key:0,item:o},null,8,["item"])):(a(),$(ya,{key:1,item:o},null,8,["item"]))],64))),128))])):f("",!0)}});const Sa=m(La,[["__scopeId","data-v-344279fb"]]);const Ma={type:"button",class:"DocSearch DocSearch-Button","aria-label":"Search"},Na={class:"DocSearch-Button-Container"},Ia=c("svg",{class:"DocSearch-Search-Icon",width:"20",height:"20",viewBox:"0 0 20 20","aria-label":"search icon"},[c("path",{d:"M14.386 14.386l4.0877 4.0877-4.0877-4.0877c-2.9418 2.9419-7.7115 2.9419-10.6533 0-2.9419-2.9418-2.9419-7.7115 0-10.6533 2.9418-2.9419 7.7115-2.9419 10.6533 0 2.9419 2.9418 2.9419 7.7115 0 10.6533z",stroke:"currentColor",fill:"none","fill-rule":"evenodd","stroke-linecap":"round","stroke-linejoin":"round"})],-1),Ta={class:"DocSearch-Button-Placeholder"},Ca=c("span",{class:"DocSearch-Button-Keys"},[c("kbd",{class:"DocSearch-Button-Key"}),c("kbd",{class:"DocSearch-Button-Key"},"K")],-1),Ve=g({__name:"VPNavBarSearchButton",props:{placeholder:{}},setup(s){return(e,t)=>(a(),i("button",Ma,[c("span",Na,[Ia,c("span",Ta,L(e.placeholder),1)]),Ca]))}});const Ba={class:"VPNavBarSearch"},Aa={id:"local-search"},xa={key:1,id:"docsearch"},Ha=g({__name:"VPNavBarSearch",setup(s){const e=Ke(()=>qe(()=>import("./VPLocalSearchBox.de88e89c.js"),["assets/chunks/VPLocalSearchBox.de88e89c.js","assets/chunks/framework.477046d0.js"])),t=()=>null,{theme:n,localeIndex:o}=V(),l=I(!1),d=I(!1),p=P(()=>{var M,N,y,D,O,E,ke;const k=((M=n.value.search)==null?void 0:M.options)??n.value.algolia;return((O=(D=(y=(N=k==null?void 0:k.locales)==null?void 0:N[o.value])==null?void 0:y.translations)==null?void 0:D.button)==null?void 0:O.buttonText)||((ke=(E=k==null?void 0:k.translations)==null?void 0:E.button)==null?void 0:ke.buttonText)||"Search"});K(()=>{});function _(){l.value||(l.value=!0,setTimeout(b,16))}function b(){const k=new Event("keydown");k.key="k",k.metaKey=!0,window.dispatchEvent(k),setTimeout(()=>{document.querySelector(".DocSearch-Modal")||b()},16)}function w(k){const M=k.target,N=M.tagName;return M.isContentEditable||N==="INPUT"||N==="SELECT"||N==="TEXTAREA"}const S=I(!1);ye("k",k=>{(k.ctrlKey||k.metaKey)&&(k.preventDefault(),S.value=!0)}),ye("/",k=>{w(k)||(k.preventDefault(),S.value=!0)});const B="local";return(k,M)=>{var N;return a(),i("div",Ba,[r(B)==="local"?(a(),i(T,{key:0},[S.value?(a(),$(r(e),{key:0,placeholder:p.value,onClose:M[0]||(M[0]=y=>S.value=!1)},null,8,["placeholder"])):f("",!0),c("div",Aa,[h(Ve,{placeholder:p.value,onClick:M[1]||(M[1]=y=>S.value=!0)},null,8,["placeholder"])])],64)):r(B)==="algolia"?(a(),i(T,{key:1},[l.value?(a(),$(r(t),{key:0,algolia:((N=r(n).search)==null?void 0:N.options)??r(n).algolia,onVnodeBeforeMount:M[2]||(M[2]=y=>d.value=!0)},null,8,["algolia"])):f("",!0),d.value?f("",!0):(a(),i("div",xa,[h(Ve,{placeholder:p.value,onClick:_},null,8,["placeholder"])]))],64)):f("",!0)])}}});const za=g({__name:"VPNavBarSocialLinks",setup(s){const{theme:e}=V();return(t,n)=>r(e).socialLinks?(a(),$($e,{key:0,class:"VPNavBarSocialLinks",links:r(e).socialLinks},null,8,["links"])):f("",!0)}});const Da=m(za,[["__scopeId","data-v-ce6708f5"]]),Ea=["href"],Fa=g({__name:"VPNavBarTitle",setup(s){const{site:e,theme:t}=V(),{hasSidebar:n}=F(),{currentLang:o}=X();return(l,d)=>(a(),i("div",{class:C(["VPNavBarTitle",{"has-sidebar":r(n)}])},[c("a",{class:"title",href:r(t).logoLink??r(J)(r(o).link)},[u(l.$slots,"nav-bar-title-before",{},void 0,!0),r(t).logo?(a(),$(ee,{key:0,class:"logo",image:r(t).logo},null,8,["image"])):f("",!0),r(t).siteTitle?(a(),i(T,{key:1},[x(L(r(t).siteTitle),1)],64)):r(t).siteTitle===void 0?(a(),i(T,{key:2},[x(L(r(e).title),1)],64)):f("",!0),u(l.$slots,"nav-bar-title-after",{},void 0,!0)],8,Ea)],2))}});const Oa=m(Fa,[["__scopeId","data-v-7f378e0f"]]),Ga={},Ua={xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false",viewBox:"0 0 24 24"},ja=c("path",{d:"M0 0h24v24H0z",fill:"none"},null,-1),Ka=c("path",{d:" M12.87 15.07l-2.54-2.51.03-.03c1.74-1.94 2.98-4.17 3.71-6.53H17V4h-7V2H8v2H1v1.99h11.17C11.5 7.92 10.44 9.75 9 11.35 8.07 10.32 7.3 9.19 6.69 8h-2c.73 1.63 1.73 3.17 2.98 4.56l-5.09 5.02L4 19l5-5 3.11 3.11.76-2.04zM18.5 10h-2L12 22h2l1.12-3h4.75L21 22h2l-4.5-12zm-2.62 7l1.62-4.33L19.12 17h-3.24z ",class:"css-c4d79v"},null,-1),qa=[ja,Ka];function Ra(s,e){return a(),i("svg",Ua,qa)}const xe=m(Ga,[["render",Ra]]),Wa={class:"items"},Ya={class:"title"},Ja=g({__name:"VPNavBarTranslations",setup(s){const{theme:e}=V(),{localeLinks:t,currentLang:n}=X({correspondingLink:!0});return(o,l)=>r(t).length&&r(n).label?(a(),$(be,{key:0,class:"VPNavBarTranslations",icon:xe,label:r(e).langMenuLabel||"Change language"},{default:v(()=>[c("div",Wa,[c("p",Ya,L(r(n).label),1),(a(!0),i(T,null,A(r(t),d=>(a(),$(oe,{key:d.link,item:d},null,8,["item"]))),128))])]),_:1},8,["label"])):f("",!0)}});const Xa=m(Ja,[["__scopeId","data-v-555fc0a2"]]),Za=s=>(H("data-v-c3e73ad1"),s=s(),z(),s),Qa={class:"container"},el={class:"title"},tl={class:"content"},sl=Za(()=>c("div",{class:"curtain"},null,-1)),nl={class:"content-body"},ol=g({__name:"VPNavBar",props:{isScreenOpen:{type:Boolean}},emits:["toggle-screen"],setup(s){const{y:e}=Se(),{hasSidebar:t}=F(),{frontmatter:n}=V(),o=I({});return we(()=>{o.value={"has-sidebar":t.value,top:n.value.layout==="home"&&e.value===0}}),(l,d)=>(a(),i("div",{class:C(["VPNavBar",o.value])},[c("div",Qa,[c("div",el,[h(Oa,null,{"nav-bar-title-before":v(()=>[u(l.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":v(()=>[u(l.$slots,"nav-bar-title-after",{},void 0,!0)]),_:3})]),c("div",tl,[sl,c("div",nl,[u(l.$slots,"nav-bar-content-before",{},void 0,!0),h(Ha,{class:"search"}),h(Sa,{class:"menu"}),h(Xa,{class:"translations"}),h(bo,{class:"appearance"}),h(Da,{class:"social-links"}),h(_a,{class:"extra"}),u(l.$slots,"nav-bar-content-after",{},void 0,!0),h(ga,{class:"hamburger",active:l.isScreenOpen,onClick:d[0]||(d[0]=p=>l.$emit("toggle-screen"))},null,8,["active"])])])])],2))}});const al=m(ol,[["__scopeId","data-v-c3e73ad1"]]),ll={key:0,class:"VPNavScreenAppearance"},rl={class:"text"},il=g({__name:"VPNavScreenAppearance",setup(s){const{site:e,theme:t}=V();return(n,o)=>r(e).appearance?(a(),i("div",ll,[c("p",rl,L(r(t).darkModeSwitchLabel||"Appearance"),1),h(me)])):f("",!0)}});const cl=m(il,[["__scopeId","data-v-0ef3d703"]]),ul=g({__name:"VPNavScreenMenuLink",props:{item:{}},setup(s){const e=ne("close-screen");return(t,n)=>(a(),$(G,{class:"VPNavScreenMenuLink",href:t.item.link,target:t.item.target,rel:t.item.rel,onClick:r(e)},{default:v(()=>[x(L(t.item.text),1)]),_:1},8,["href","target","rel","onClick"]))}});const dl=m(ul,[["__scopeId","data-v-cd45b3cd"]]),_l={},vl={xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false",viewBox:"0 0 24 24"},pl=c("path",{d:"M18.9,10.9h-6v-6c0-0.6-0.4-1-1-1s-1,0.4-1,1v6h-6c-0.6,0-1,0.4-1,1s0.4,1,1,1h6v6c0,0.6,0.4,1,1,1s1-0.4,1-1v-6h6c0.6,0,1-0.4,1-1S19.5,10.9,18.9,10.9z"},null,-1),hl=[pl];function fl(s,e){return a(),i("svg",vl,hl)}const ml=m(_l,[["render",fl]]),gl=g({__name:"VPNavScreenMenuGroupLink",props:{item:{}},setup(s){const e=ne("close-screen");return(t,n)=>(a(),$(G,{class:"VPNavScreenMenuGroupLink",href:t.item.link,target:t.item.target,rel:t.item.rel,onClick:r(e)},{default:v(()=>[x(L(t.item.text),1)]),_:1},8,["href","target","rel","onClick"]))}});const He=m(gl,[["__scopeId","data-v-67e5b794"]]),bl={class:"VPNavScreenMenuGroupSection"},$l={key:0,class:"title"},kl=g({__name:"VPNavScreenMenuGroupSection",props:{text:{},items:{}},setup(s){return(e,t)=>(a(),i("div",bl,[e.text?(a(),i("p",$l,L(e.text),1)):f("",!0),(a(!0),i(T,null,A(e.items,n=>(a(),$(He,{key:n.text,item:n},null,8,["item"]))),128))]))}});const yl=m(kl,[["__scopeId","data-v-c7bb2a3e"]]),Pl=["aria-controls","aria-expanded"],Vl={class:"button-text"},wl=["id"],Ll={key:1,class:"group"},Sl=g({__name:"VPNavScreenMenuGroup",props:{text:{},items:{}},setup(s){const e=s,t=I(!1),n=P(()=>`NavScreenGroup-${e.text.replace(" ","-").toLowerCase()}`);function o(){t.value=!t.value}return(l,d)=>(a(),i("div",{class:C(["VPNavScreenMenuGroup",{open:t.value}])},[c("button",{class:"button","aria-controls":n.value,"aria-expanded":t.value,onClick:o},[c("span",Vl,L(l.text),1),h(ml,{class:"button-icon"})],8,Pl),c("div",{id:n.value,class:"items"},[(a(!0),i(T,null,A(l.items,p=>(a(),i(T,{key:p.text},["link"in p?(a(),i("div",{key:p.text,class:"item"},[h(He,{item:p},null,8,["item"])])):(a(),i("div",Ll,[h(yl,{text:p.text,items:p.items},null,8,["text","items"])]))],64))),128))],8,wl)],2))}});const Ml=m(Sl,[["__scopeId","data-v-63fd6e4e"]]),Nl={key:0,class:"VPNavScreenMenu"},Il=g({__name:"VPNavScreenMenu",setup(s){const{theme:e}=V();return(t,n)=>r(e).nav?(a(),i("nav",Nl,[(a(!0),i(T,null,A(r(e).nav,o=>(a(),i(T,{key:o.text},["link"in o?(a(),$(dl,{key:0,item:o},null,8,["item"])):(a(),$(Ml,{key:1,text:o.text||"",items:o.items},null,8,["text","items"]))],64))),128))])):f("",!0)}}),Tl=g({__name:"VPNavScreenSocialLinks",setup(s){const{theme:e}=V();return(t,n)=>r(e).socialLinks?(a(),$($e,{key:0,class:"VPNavScreenSocialLinks",links:r(e).socialLinks},null,8,["links"])):f("",!0)}}),Cl={class:"list"},Bl=g({__name:"VPNavScreenTranslations",setup(s){const{localeLinks:e,currentLang:t}=X({correspondingLink:!0}),n=I(!1);function o(){n.value=!n.value}return(l,d)=>r(e).length&&r(t).label?(a(),i("div",{key:0,class:C(["VPNavScreenTranslations",{open:n.value}])},[c("button",{class:"title",onClick:o},[h(xe,{class:"icon lang"}),x(" "+L(r(t).label)+" ",1),h(Ae,{class:"icon chevron"})]),c("ul",Cl,[(a(!0),i(T,null,A(r(e),p=>(a(),i("li",{key:p.link,class:"item"},[h(G,{class:"link",href:p.link},{default:v(()=>[x(L(p.text),1)]),_:2},1032,["href"])]))),128))])],2)):f("",!0)}});const Al=m(Bl,[["__scopeId","data-v-10cb32fc"]]),xl={class:"container"},Hl=g({__name:"VPNavScreen",props:{open:{type:Boolean}},setup(s){const e=I(null),t=Me(W?document.body:null);return(n,o)=>(a(),$(ce,{name:"fade",onEnter:o[0]||(o[0]=l=>t.value=!0),onAfterLeave:o[1]||(o[1]=l=>t.value=!1)},{default:v(()=>[n.open?(a(),i("div",{key:0,class:"VPNavScreen",ref_key:"screen",ref:e,id:"VPNavScreen"},[c("div",xl,[u(n.$slots,"nav-screen-content-before",{},void 0,!0),h(Il,{class:"menu"}),h(Al,{class:"translations"}),h(cl,{class:"appearance"}),h(Tl,{class:"social-links"}),u(n.$slots,"nav-screen-content-after",{},void 0,!0)])],512)):f("",!0)]),_:3}))}});const zl=m(Hl,[["__scopeId","data-v-c4b5a2af"]]),Dl={key:0,class:"VPNav"},El=g({__name:"VPNav",setup(s){const{isScreenOpen:e,closeScreen:t,toggleScreen:n}=Jn(),{frontmatter:o}=V(),l=P(()=>o.value.navbar!==!1);return Ne("close-screen",t),te(()=>{W&&document.documentElement.classList.toggle("hide-nav",!l.value)}),(d,p)=>l.value?(a(),i("header",Dl,[h(al,{"is-screen-open":r(e),onToggleScreen:r(n)},{"nav-bar-title-before":v(()=>[u(d.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":v(()=>[u(d.$slots,"nav-bar-title-after",{},void 0,!0)]),"nav-bar-content-before":v(()=>[u(d.$slots,"nav-bar-content-before",{},void 0,!0)]),"nav-bar-content-after":v(()=>[u(d.$slots,"nav-bar-content-after",{},void 0,!0)]),_:3},8,["is-screen-open","onToggleScreen"]),h(zl,{open:r(e)},{"nav-screen-content-before":v(()=>[u(d.$slots,"nav-screen-content-before",{},void 0,!0)]),"nav-screen-content-after":v(()=>[u(d.$slots,"nav-screen-content-after",{},void 0,!0)]),_:3},8,["open"])])):f("",!0)}});const Fl=m(El,[["__scopeId","data-v-a8878f8a"]]),Ol=s=>(H("data-v-66eb756e"),s=s(),z(),s),Gl=["role","tabindex"],Ul=Ol(()=>c("div",{class:"indicator"},null,-1)),jl=["onKeydown"],Kl={key:1,class:"items"},ql=g({__name:"VPSidebarItem",props:{item:{},depth:{}},setup(s){const e=s,{collapsed:t,collapsible:n,isLink:o,isActiveLink:l,hasActiveLink:d,hasChildren:p,toggle:_}=mt(P(()=>e.item)),b=P(()=>p.value?"section":"div"),w=P(()=>o.value?"a":"div"),S=P(()=>p.value?e.depth+2===7?"p":`h${e.depth+2}`:"p"),B=P(()=>o.value?void 0:"button"),k=P(()=>[[`level-${e.depth}`],{collapsible:n.value},{collapsed:t.value},{"is-link":o.value},{"is-active":l.value},{"has-active":d.value}]);function M(y){"key"in y&&y.key!=="Enter"||!e.item.link&&_()}function N(){e.item.link&&_()}return(y,D)=>{const O=R("VPSidebarItem",!0);return a(),$(U(b.value),{class:C(["VPSidebarItem",k.value])},{default:v(()=>[y.item.text?(a(),i("div",Z({key:0,class:"item",role:B.value},We(y.item.items?{click:M,keydown:M}:{},!0),{tabindex:y.item.items&&0}),[Ul,y.item.link?(a(),$(G,{key:0,tag:w.value,class:"link",href:y.item.link,rel:y.item.rel,target:y.item.target},{default:v(()=>[(a(),$(U(S.value),{class:"text",innerHTML:y.item.text},null,8,["innerHTML"]))]),_:1},8,["tag","href","rel","target"])):(a(),$(U(S.value),{key:1,class:"text",innerHTML:y.item.text},null,8,["innerHTML"])),y.item.collapsed!=null?(a(),i("div",{key:2,class:"caret",role:"button","aria-label":"toggle section",onClick:N,onKeydown:Re(N,["enter"]),tabindex:"0"},[h(fe,{class:"caret-icon"})],40,jl)):f("",!0)],16,Gl)):f("",!0),y.item.items&&y.item.items.length?(a(),i("div",Kl,[y.depth<5?(a(!0),i(T,{key:0},A(y.item.items,E=>(a(),$(O,{key:E.text,item:E,depth:y.depth+1},null,8,["item","depth"]))),128)):f("",!0)])):f("",!0)]),_:1},8,["class"])}}});const Rl=m(ql,[["__scopeId","data-v-66eb756e"]]),ze=s=>(H("data-v-e9e5071d"),s=s(),z(),s),Wl=ze(()=>c("div",{class:"curtain"},null,-1)),Yl={class:"nav",id:"VPSidebarNav","aria-labelledby":"sidebar-aria-label",tabindex:"-1"},Jl=ze(()=>c("span",{class:"visually-hidden",id:"sidebar-aria-label"}," Sidebar Navigation ",-1)),Xl=g({__name:"VPSidebar",props:{open:{type:Boolean}},setup(s){const e=s,{sidebarGroups:t,hasSidebar:n}=F(),o=I(null),l=Me(W?document.body:null);return q([e,o],()=>{var d;e.open?(l.value=!0,(d=o.value)==null||d.focus()):l.value=!1},{immediate:!0,flush:"post"}),(d,p)=>r(n)?(a(),i("aside",{key:0,class:C(["VPSidebar",{open:d.open}]),ref_key:"navEl",ref:o,onClick:p[0]||(p[0]=Ye(()=>{},["stop"]))},[Wl,c("nav",Yl,[Jl,u(d.$slots,"sidebar-nav-before",{},void 0,!0),(a(!0),i(T,null,A(r(t),_=>(a(),i("div",{key:_.text,class:"group"},[h(Rl,{item:_,depth:0},null,8,["item"])]))),128)),u(d.$slots,"sidebar-nav-after",{},void 0,!0)])],2)):f("",!0)}});const Zl=m(Xl,[["__scopeId","data-v-e9e5071d"]]),Ql=g({__name:"VPSkipLink",setup(s){const e=se(),t=I();q(()=>e.path,()=>t.value.focus());function n({target:o}){const l=document.getElementById(decodeURIComponent(o.hash).slice(1));if(l){const d=()=>{l.removeAttribute("tabindex"),l.removeEventListener("blur",d)};l.setAttribute("tabindex","-1"),l.addEventListener("blur",d),l.focus(),window.scrollTo(0,0)}}return(o,l)=>(a(),i(T,null,[c("span",{ref_key:"backToTop",ref:t,tabindex:"-1"},null,512),c("a",{href:"#VPContent",class:"VPSkipLink visually-hidden",onClick:n}," Skip to content ")],64))}});const er=m(Ql,[["__scopeId","data-v-7ac0da99"]]),tr=g({__name:"Layout",setup(s){const{isOpen:e,open:t,close:n}=F(),o=se();q(()=>o.path,n),ft(e,n);const{frontmatter:l}=V(),d=Je(),p=P(()=>!!d["home-hero-image"]);return Ne("hero-image-slot-exists",p),(_,b)=>{const w=R("Content");return r(l).layout!==!1?(a(),i("div",{key:0,class:C(["Layout",r(l).pageClass])},[u(_.$slots,"layout-top",{},void 0,!0),h(er),h(tt,{class:"backdrop",show:r(e),onClick:r(n)},null,8,["show","onClick"]),h(Fl,null,{"nav-bar-title-before":v(()=>[u(_.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":v(()=>[u(_.$slots,"nav-bar-title-after",{},void 0,!0)]),"nav-bar-content-before":v(()=>[u(_.$slots,"nav-bar-content-before",{},void 0,!0)]),"nav-bar-content-after":v(()=>[u(_.$slots,"nav-bar-content-after",{},void 0,!0)]),"nav-screen-content-before":v(()=>[u(_.$slots,"nav-screen-content-before",{},void 0,!0)]),"nav-screen-content-after":v(()=>[u(_.$slots,"nav-screen-content-after",{},void 0,!0)]),_:3}),h(Yn,{open:r(e),onOpenMenu:r(t)},null,8,["open","onOpenMenu"]),h(Zl,{open:r(e)},{"sidebar-nav-before":v(()=>[u(_.$slots,"sidebar-nav-before",{},void 0,!0)]),"sidebar-nav-after":v(()=>[u(_.$slots,"sidebar-nav-after",{},void 0,!0)]),_:3},8,["open"]),h(Sn,null,{"page-top":v(()=>[u(_.$slots,"page-top",{},void 0,!0)]),"page-bottom":v(()=>[u(_.$slots,"page-bottom",{},void 0,!0)]),"not-found":v(()=>[u(_.$slots,"not-found",{},void 0,!0)]),"home-hero-before":v(()=>[u(_.$slots,"home-hero-before",{},void 0,!0)]),"home-hero-info":v(()=>[u(_.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-image":v(()=>[u(_.$slots,"home-hero-image",{},void 0,!0)]),"home-hero-after":v(()=>[u(_.$slots,"home-hero-after",{},void 0,!0)]),"home-features-before":v(()=>[u(_.$slots,"home-features-before",{},void 0,!0)]),"home-features-after":v(()=>[u(_.$slots,"home-features-after",{},void 0,!0)]),"doc-footer-before":v(()=>[u(_.$slots,"doc-footer-before",{},void 0,!0)]),"doc-before":v(()=>[u(_.$slots,"doc-before",{},void 0,!0)]),"doc-after":v(()=>[u(_.$slots,"doc-after",{},void 0,!0)]),"doc-top":v(()=>[u(_.$slots,"doc-top",{},void 0,!0)]),"doc-bottom":v(()=>[u(_.$slots,"doc-bottom",{},void 0,!0)]),"aside-top":v(()=>[u(_.$slots,"aside-top",{},void 0,!0)]),"aside-bottom":v(()=>[u(_.$slots,"aside-bottom",{},void 0,!0)]),"aside-outline-before":v(()=>[u(_.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":v(()=>[u(_.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":v(()=>[u(_.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":v(()=>[u(_.$slots,"aside-ads-after",{},void 0,!0)]),_:3}),h(Cn),u(_.$slots,"layout-bottom",{},void 0,!0)],2)):(a(),$(w,{key:1}))}}});const sr=m(tr,[["__scopeId","data-v-b45c2b2b"]]);const or={Layout:sr,enhanceApp:({app:s})=>{s.component("Badge",Ze)}};function ar(s,e){const{localeIndex:t}=V();function n(o){var k,M;const l=o.split("."),d=s&&typeof s=="object",p=d&&((M=(k=s.locales)==null?void 0:k[t.value])==null?void 0:M.translations)||null,_=d&&s.translations||null;let b=p,w=_,S=e;const B=l.pop();for(const N of l){let y=null;const D=S==null?void 0:S[N];D&&(y=S=D);const O=w==null?void 0:w[N];O&&(y=w=O);const E=b==null?void 0:b[N];E&&(y=b=E),D||(S=y),O||(w=y),E||(b=y)}return(b==null?void 0:b[B])??(w==null?void 0:w[B])??(S==null?void 0:S[B])??""}return n}export{ar as c,or as t,V as u}; diff --git a/backend/api.html b/backend/api.html index 4ddc4f9c2..30b2e3a5f 100644 --- a/backend/api.html +++ b/backend/api.html @@ -7,10 +7,10 @@ - + - + @@ -95,7 +95,7 @@ return await http.get("/api/users/user", params); }, };

http.js - обертка вокруг запросов на сервер через вашу любимую библиотеку.

Чем удобно абстрагирование кода связи с бэкендом от основного кода приложения в отдельный сервис?

Можно легко заменить axios на fetch или XHR, REST на JSON-RPC или WebSockets. Код в компонентах не меняется и остается простым и явным.

- + \ No newline at end of file diff --git a/backend/auth.html b/backend/auth.html index 07d0a54b6..07c830a5f 100644 --- a/backend/auth.html +++ b/backend/auth.html @@ -7,10 +7,10 @@ - + - + @@ -27,7 +27,7 @@
Skip to content

Аутентификация и авторизация

Что такое аутентификация и авторизация

Грубо говоря:

Аутентификация - когда система удостоверяется, что в неё залогинился именно Вася Пупкин, например, проверив его логин и пароль

Авторизация - когда система удостоверяется, что запрашивающий ресурс/действие пользователь имеет право доступа к нему. Например, старший менеджер имеет право удаления товара в админке, а простой менеджер - нет.

Как сделать систему аутентификации на сайта

Для SPA самый распространенный способ - на JWT токенах. Вариантов это сделать много, в зависимости от требований уровня безопасности (личный блог Васи Пупкина с комментариями гостей и онлайн магазин с депозитами и бонусами - две большие разницы).

JWT - это стандарт записи небольшого количества информации в строку (токен) и подписывания её (криптография). Делает это бэкенд. Таким образом только бэкенд может удостовериться, что токен выписан им, и в нем действительная информация.

Стандарта аутентификация на токенах как такового нет, есть лучшие практики.

Варианты:

  1. Бэкенд генерит токен (access token - AT) и кладет в httpOnly cookie. Фронтэнд доступа к токену не имеет, браузер просто возвращает куку. Метод незаслужено редко используемый, но вполне надежный. С фронта снимаются все заморочки по манипуляции с АТ.

Сценарий:

  • Фронт логинится, получает данные пользователя с бэка и работает с ними. При получении при любом запросе 401 - направляет пользователя на форму логина, обнуляет данные пользователя.
  • Бэк при логине создает httpOnly cookie с токеном с определенным сроком жизни. На каждом запросе проверяет токен, определяет того, кому выписан этот токен и его права, и дальше решает разрешать ли доступ. Если срок жизни токена кончился - возвращает 401.
  1. Бэкенд генерит токен (access token - AT) и передаёт фронту. Фронт сохраняет его и каждый раз отправляет его обратно. По сути то же самое, что и в первом случае, плюс лишние телодвижения и возможность потерять токен через XSS.

  2. Используются два токена - короткоживущий access token (AT) и дольше живущий refresh token (RT) пересылаемый в httpOnly cookie. AT работает как во втором случае. Когда записанный в нем срок его жизни кончается, бэкенд проверяет RT, и если он валиден, обновляет AT. Кончается RT - пользователь направляется на перелогин.

Подробнее по данной теме можно ознакомиться в, например, этой статье

Где хранить access token на фронте?

В 95% случаев в LocalStorage

Что такое oAuth и SSO?

oAuth - Логин "через Google". Также когда, например, у пользователь есть возможность на твоем сайте сохранить что-то в Google Drive. Чтобы получить разрешение для твоего сайта работы с Google Drive аккаунтом пользователя, ты просишь его дать через Google разрешения твоему сайту лазить в его аккаунт. Итого у нас есть четыре части - Google (авторизационный центр), сторонний ресурс (Google Drive), твой сайт и пользователь

SSO - single sign-on - логин пользователя на портал некой компании один раз, и затем прозрачный доступ на разные его сервисы. Например, логин в GMail и доступ в сразу в Google Диск, Google Photo и так далее.

Дает ли аутентификация через JWT безопасность?

Безопасность - очень комплексное понятие, аутентификация через JWT - всего лишь один из её элементов. Для критичных приложений можно снимать отпечаток системы пользователя (browser fingerprint) и заставлять пользователя перелогиниваться как только он изменился. То же самое с IP. Таким образом можно бороться с кражей АТ. Также ставить очень маленький срок жизни AT, если используется RT. Но основные меры безопасности связаны не с аутентификацией, а с постоянным мониторингом системы на подозрительные действия.

Авторизация

Если нужно давать пользователям разный уровень доступа к ресурсам сайта, то обычно применяется или RBAC (Role-based access control) или PBA - Policy-Based Authorization (Permission-Based Authorization).

В первом случае пользователи распределяются по ролям (админ, менеджер, юзер) и уровень доступа определяется ролью.

Во-втором можно более гранулировано задать разрешение каждому пользователю индивидуально на любое действие.

Нужно понимать, что на фронте авторизация делается для удобства (пользователь не видит разделы сайта, которые ему запрещены), но за безопасность отвечает бэк - он должен проверять каждый раз, имеет ли пользователь право доступа к запрашиваемому ресурсу, даже если на фронте его как бы видно не должно быть. Сломать фронт - очень несложно.

- + \ No newline at end of file diff --git a/backend/backend.html b/backend/backend.html index 192e09c1a..ec2ae5419 100644 --- a/backend/backend.html +++ b/backend/backend.html @@ -7,10 +7,10 @@ - + - + @@ -27,7 +27,7 @@
Skip to content

Варианты задействовать свой бэкенд для фронтендера

Как протестировать фронт на данных с бэка?

Есть много сервисов, предлагающих свой API с различными данными для тестирования либо полноценной работы

Например, jsonplaceholder.typicode.com

Гуглить по "json placeholder"

Есть ли бесплатные открытые API с реальными данными?

Полно. Например, тут

Гуглить по "public api"

Также можно похакать релевантные сайты в DevTools / Network на предмет эндпойнтов с данными в подходящем формате

Как сделать свой бэкенд?

Если уже знаете JavaScript, поставить и запустить Node.js с HTTP сервером проблем вызвать не должно.

Node.js далеко не очень популярный сервер для интернета, но для небольшого проекта пойдет.

В абсолютном значении проще всего установить и начать работать с Nginx и PHP

Большинство крупных облачных провайдеров (Amazon, Google, Oracle, Microsoft) предоставляет бесплатные планы с возможностью запустить виртуальный сервер. Поставив туда что требуется, можно захостить и бэк, и бандл фронта.

Что такое BaaS (Backend as a service)?

Это облачное решение, когда бэкенд в виде базы данных и интерфейса доступа к ней, а возможно и возможность использовать некоторую логику, предоставляет BaaS провайдер.

Например, NoSQL базу данных и доступ к ней предоставляет Google с помощью своего сервиcа Firebase

Альтернатива с PostgreSQL - Supabase

То есть, ваш фронтэнд будет обращаться к их определенным эндпойнтам и получать нужные сервисы - например, сохранять и запрашивать данные в базе данных.

Оба сервиса предоставляют возможность сделать аутентификацию на сайте. Таким образом, фронтэндер может написать приложение используя подобный сервис без написания своего бэкенд кода и без размещения его где-то на сервере в интернете.

У данных сервисов есть бесплатные планы с довольно большими ресурсами.

Бизнес логика на BaaS

Большинство BaaS сервисов предоставляет не только CRUD доступ к своей базе данных, но и возможность написать кастомную логику в виде Cloud Functions у Firebase, Edge Functions у Supabase, AWS Lambda у Amazon и т.д.

Данные функции являются кодом на каком-то языке программирования, который будет вызываться при обращении к определенному эндпойнту бэкенда.

В случае, если фронтенд разработчик хочет сделать полноценное приложение, но заморачиваться на самостоятельный бэкенд не хочет, это является довольно неплохим и очень экономичным решением.

Как работают Edge/Cloud/Lamda функции

По сути, это бэкенд в миниатюре

Твой фронт обращаешься к заданному эндпойнту (через API gateway сервиса BaaS провайдера) - например, /api/somefunc

Там лежит написанный тобой скрипт на js или другом языке программирования который выполняется, имеет доступ к базе данных и может делать другие вещи (грузить данные из инета например)

Затем скрипт формирует результат и возвращает его твоему фронту

- + \ No newline at end of file diff --git a/backend/cors.html b/backend/cors.html index 6281171ef..b45abff00 100644 --- a/backend/cors.html +++ b/backend/cors.html @@ -7,10 +7,10 @@ - + - + @@ -31,7 +31,7 @@ Origin: client-1.com
GET /info HTTP/1.1
 Host: server-site.com
 Origin: client-1.com

В случае, если сервер по адресу www.server-site.com разрешает странице-источнику запроса доступ к данным с домена, в его ответе на запрос появится строка Access-Control-Allow-Origin с именем объявленного домена:

Access-Control-Allow-Origin: https://client-1.com
Access-Control-Allow-Origin: https://client-1.com

Если сервер, на который запрошен доступ, не добавит в ответ указанную строку, браузер клиента вместо данных файла info вернет код ошибки.

Если на сервере разрешен доступ к ресурсу страницам любого стороннего домена, в ответе будет указана маска «*».

Access-Control-Allow-Origin: *
Access-Control-Allow-Origin: *

Если на сервере разрешен доступ не всем, а нескольким сторонним клиентам, ответ сервера содержит имена всех этих доменов, выведенных отдельными строками или разделенных пробелами:

Access-Control-Allow-Origin: https://client-1.com https://client-2.com https://client-3.com
Access-Control-Allow-Origin: https://client-1.com https://client-2.com https://client-3.com

В стандарте CORS много нюансов. Вот более подробная статья по теме CORS

Проблемы с CORS

CORS проблемы могут возникнуть только когда к ресурсу обращается браузер, а не отдельная программа типа Postman или другой бэкенд.

Как временное решение при разработке могут помочь CORS proxy, которые становятся посредником между фронтендом и бэкендом, или расширения браузера.

Vite предоставляет подобный прокси для dev режима.

- + \ No newline at end of file diff --git a/backend/protocols.html b/backend/protocols.html index 13ac459db..9de3d93ea 100644 --- a/backend/protocols.html +++ b/backend/protocols.html @@ -7,10 +7,10 @@ - + - + @@ -27,7 +27,7 @@
Skip to content

Протоколы. To REST или не REST?

REST, WebSockets, JSON-RPC

Для новичка, конечно, удобнее начинать с REST - запросы на сервер абы как.

Для более опытных, особенно, фулстеков, предлагаю взглянуть на JSON-RPC

WebSockets удобен тем, что дает двунаправленную связь (сервер может посылать сообщения на клиент), но требует специального программного обеспечения на бэкенде.

Почему JSON-RPC?

После опыта с JSON-RPC общение с бэком обычно уже никогда не бывает прежним.

Он дает порядок, четкость, строгость и вместе с тем гибкость. Сильно упрощает и делает понятным код как на фронте, так и на бэке.

Вот две мои статьи на эту тему - Популяризация JSON-RPC (часть 1) и Популяризация JSON-RPC (часть 2)

Вариант TypeScript реализации фронтэнд api сервиса на JSON-RPC - здесь

При использовании JSON-RPC переход на WebSockets или другие транспортные протоколы не вызовет никаких трудностей из-за унификации формата сообщений.

Как организовать реконнект WebSocket соединения на фронте?

Нужна шина, или Еvent bus, которая будет работать как прокси для приходящих сообщений.

Можно использовать mitt.

Что такое GraphGL?

Сложная штука, попытка перевести язык запросов SQL для клиент-серверных запросов в интернете.

Имеет довольно специфичное применение, преимущественно у сторонних поставщиков данных через API.

Для своего фулстек приложения - на 99% ненужное решение.

- + \ No newline at end of file diff --git a/book/ru/Chapter 1_ The Vue 3 Framework.html b/book/ru/Chapter 1_ The Vue 3 Framework.html index 1d15ac9b3..4d41d1ca1 100644 --- a/book/ru/Chapter 1_ The Vue 3 Framework.html +++ b/book/ru/Chapter 1_ The Vue 3 Framework.html @@ -7,11 +7,11 @@ - + - - + + @@ -117,7 +117,7 @@ </script>
<script setup>
 import { ref } from "vue";
 const _hello = ref("Hello World");
-</script>

Две строки кода! Это трудно превзойти. Поскольку мы добавили атрибут setup в тег script, сборщик знает, что все, что мы здесь делаем, относится к области Composition API, и все функции, переменные и константы автоматически отображаются в шаблон. Нет необходимости определять экспорт. Если нам что-то нужно, мы импортируем это напрямую и используем. Кроме того, теперь у нас есть несколько дополнительных преимуществ, например, следующие:

  • Мы можем иметь реактивные и нереактивные переменные, отображаемые в нашем шаблоне
  • Мы знаем, что весь код выполняется до того, как компонент будет смонтирован
  • Синтаксис ближе к ванильному JavaScript (большой плюс!!!), поэтому мы можем организовать наш код так, как нам удобно и приятно
  • Меньший размер пакета (я уже говорил об этом? Да, это важно!)

Но подождите, вы можете заметить, что я определяю реактивную переменную как константу! Да, это так. И нет, это не ошибка. В JavaScript константа указывает на конкретное неизменяемое значение, которым в данном случае является объект, но это относится только к объекту, а не к его членам. Конструктор ref() возвращает объект, поэтому константа применяется к ссылке на объект, и мы можем изменять значения его членов. Если вы работали с указателями в Java, C или другом подобном языке, то, возможно, узнаете эту концепцию как использование указателей. Однако за все это приходится платить. Для того чтобы получить доступ к значению и изменить его, теперь необходимо получить доступ к атрибуту значение объекта. Вот пример:

js
_hello.value = "Некоторое другое значение";
_hello.value = "Некоторое другое значение";

Но, в то же время, ничего не изменилось в способе доступа к этой переменной в шаблоне:

vue
<div>{{_hello}}</div>
<div>{{_hello}}</div>

Кроме того, каждый раз, когда переменная объявляется как реактивная с помощью конструктора ref(), необходимо ссылаться на ее значение в формате constant_name.value, и как constant_name в шаблоне (HTML). Когда имя константы используется в шаблоне, Vue уже знает, как получить доступ к ее значению, и вам не нужно ссылаться на нее явно, как в JavaScript.

Совет

Выработайте или примите соглашение о коде (code convention), чтобы знать, когда идентификатор относится к переменной, константе, функции, классу и т. д.

Изучение встроенных директив в Vue 3

В Vue также предусмотрены специальные атрибуты HTML, называемые директивами. Директива объявляется в открывающем теге HTML-элемента и влияет на динамическое поведение или функциональность этого элемента. Мы также можем создавать собственные директивы в Vue. Те из них, которые предоставляются фреймворком, имеют специальную нотацию, начинающуюся с v-. В рамках данной книги рассмотрим наиболее часто используемые директивы Vue:

v-bind: (сокращение ":")

Директива v-bind: связывает значение HTML-атрибута со значением переменной JavaScript. Если переменная является реактивной, то при каждом обновлении ее значения оно будет отражаться в html. Если переменная не реактивная, то она будет использоваться только один раз при первоначальном рендеринге HTML. Чаще всего мы используем только сокращенный префикс : (двоеточие). Например, реактивная переменная my_profile_picture содержит веб-адрес к картинке:

html
<img :src="my_profile_picture" />
<img :src="my_profile_picture" />

Атрибут src получит значение переменной my_profile_picture

v-show

Эта директива показывает или скрывает элемент, не удаляя его из документа. Она эквивалентна модификации атрибута CSS display. Она ожидает переменную, которая дает булево значение (или то, что может быть интерпретировано как true или непустое). Например, переменная loading имеет булево значение:

vue
<div v-show="loading">...</div>
<div v-show="loading">...</div>

Этот div появится, когда переменная loading будет равна true.

Важно иметь в виду, что v-show будет использовать стиль объекта, чтобы отобразить его или нет, но элемент все равно будет частью Document Object Model (DOM)

v-if.

v-if, v-else и v-else-if

Эти директивы ведут себя так же, как и условные предложения в JavaScript, показывая и скрывая элемент в зависимости от значения, определяемого переданным выражением. Они похожи на v-show в том смысле, что показывают или скрывают элемент, но с той разницей, что они полностью удаляют элемент из DOM. Из-за этого при неправильном использовании в больших масштабах с элементами, часто меняющими свое состояние, они могут быть дороги в вычислительном отношении, так как фреймворку приходится выполнять больше операций для манипулирования DOM, в отличие от v-show, когда нужно изменить только стиль отображения.

Совет

Используйте v-if для показа или отображения элементов, которые не будут переключаться после показа или скрытия (и предпочтительно, если начальное состояние скрыто). Используйте v-show, если элемент будет часто показываться/скрываться. Это улучшит производительность при отображении больших списков элементов.

v-for и :key

В сочетании эти два атрибута ведут себя подобно циклу for в JavaScript. Они создают столько копий элемента, сколько прописано в итераторе, каждая из которых имеет соответствующее интерполированное значение. Это очень удобно для отображения коллекций элементов данных. Атрибут :key используется внутри цикла для более эффективного отслеживания изменений и должен ссылаться на уникальный атрибут элемента, по которому выполняется цикл, - например, на поле id объекта или на индекс в массиве, если индексы не меняются. Вот пример:

vue
<span v-for="i in 5" :key="i"> {{i}} </span>
<span v-for="i in 5" :key="i"> {{i}} </span>

Таким образом на веб-странице будет отображено пять элементов span с интерполяцией i, что выглядит следующим образом:

1 2 3 4 5

v-model

Эта директива - чистая магия. При присоединении к элементу ввода (input, textarea, select и т.д.) она присваивает значение, возвращаемое HTML-элементом, ссылаемой переменной, поддерживая тем самым синхронизацию состояния DOM и JavaScript, что называется двусторонним связыванием. Вот пример:

vue
<input type="text" v-model="name" \>
<input type="text" v-model="name" \>

Когда пользователь вводит текст в HTML, переменной name в JavaScript сразу же присваивается это значение. В этих примерах мы используем примитивные типы данных, такие как числа и строки, но мы можем использовать и более сложные значения, такие как объекты или массивы. Подробнее об этом будет рассказано в главе 4 Композиция пользовательского интерфейса с компонентами, когда мы рассмотрим компоненты в деталях.

v-on: (и сокращение @)

Эта директива ведет себя несколько иначе, чем предыдущие. Она ожидает не переменную, а функцию или выражение, и связывает HTML-событие с функцией JavaScript для его выполнения. Событие должно быть объявлено сразу после двоеточия. Например, чтобы отреагировать на событие click на кнопке мыши, мы напишем следующее:

vue
<button v-on:click="printPage()">Print</button>
<button v-on:click="printPage()">Print</button>

Когда кнопка вызывает событие click, будет выполнена функция JavaScript printPage(). Кроме того, для этой директивы чаще используется сокращение, которое мы и будем использовать в дальнейшем в этой книге: просто замените v-on: на @. Тогда предыдущий пример превратится в следующий:

vue
<button @click="printPage()">Print\</button>
<button @click="printPage()">Print\</button>

Полный список встроенных директив можно найти в официальной документации здесь: https://vuejs.org/api/built-in-directives.html. По мере продвижения вперед мы увидим и другие.

До сих пор мы видели, что приложения Vue 3 строятся с помощью компонентов, которые мы можем использовать в нашем HTML и которые мы создаем с помощью SFC. Фреймворк также предоставляет нам директивы для работы с элементами HTML, но это еще не все. В следующем разделе мы увидим, что фреймворк также предоставляет несколько удобных готовых компонентов, которые мы можем использовать.

Встроенные компоненты

Фреймворк также предоставляет нам несколько встроенных компонентов, которые мы можем использовать, не импортируя их явно в каждый SFC. Я привел здесь небольшое описание каждого из них, поэтому за синтаксисом и примерами можно обратиться к официальной документации (см. https://vuejs.org/api/built-in-components.html):

  • Transition и TransitionGroup - это два компонента, которые могут работать вместе для обеспечения анимации и перехода элементов и компонентов. Они требуют создания CSS-анимации и классов переходов для реализации анимации при вставке или удалении элементов на странице. В основном (или часто) они используются при отображении списка элементов с помощью директив v-for/:key или v-if/v-show.

  • KeepAlive - это еще один компонент-обертка (то есть окружение других компонентов), используемый для сохранения состояния (внутренних переменных, элементов и т.д.), когда компонент, обернутый в него, больше не отображается. Обычно при размонтировании экземпляры компонентов очищаются и "собираются в мусор". KeepAlive сохраняет их в кэше, чтобы их состояние было восстановлено, когда они снова появятся на экране.

  • Teleport - совершенно новый компонент в Vue 3, который позволяет переносить HTML компонента в другое место на странице, даже за пределы дерева компонентов вашего приложения. Это помогает в некоторых случаях, когда необходимо вывести информацию за пределы компонента, но она должна быть обработана внутренней логикой компонента.

  • Suspense - новый компонент в Vue 3, но пока он находится в экспериментальной стадии, поэтому его будущее на момент написания статьи не определено. Основная идея заключается в отображении "запасного" контента до тех пор, пока все асинхронные дочерние компоненты/элементы не будут готовы к рендерингу. Он предоставляется для удобства, поскольку существуют шаблоны, которые можно использовать для решения этой проблемы. Мы рассмотрим их позже.

  • Component-is - это специальный элемент, который будет загружать компонент во время выполнения, как предписано содержимым переменной - например, если нам нужно отобразить компонент на основе значения переменной, а использование других директив может быть громоздким. Она также может быть использована для вывода HTML-элементов. Рассмотрим пример:

vue
<script setup>
+</script>

Две строки кода! Это трудно превзойти. Поскольку мы добавили атрибут setup в тег script, сборщик знает, что все, что мы здесь делаем, относится к области Composition API, и все функции, переменные и константы автоматически отображаются в шаблон. Нет необходимости определять экспорт. Если нам что-то нужно, мы импортируем это напрямую и используем. Кроме того, теперь у нас есть несколько дополнительных преимуществ, например, следующие:

  • Мы можем иметь реактивные и нереактивные переменные, отображаемые в нашем шаблоне
  • Мы знаем, что весь код выполняется до того, как компонент будет смонтирован
  • Синтаксис ближе к ванильному JavaScript (большой плюс!!!), поэтому мы можем организовать наш код так, как нам удобно и приятно
  • Меньший размер пакета (я уже говорил об этом? Да, это важно!)

Но подождите, вы можете заметить, что я определяю реактивную переменную как константу! Да, это так. И нет, это не ошибка. В JavaScript константа указывает на конкретное неизменяемое значение, которым в данном случае является объект, но это относится только к объекту, а не к его членам. Конструктор ref() возвращает объект, поэтому константа применяется к ссылке на объект, и мы можем изменять значения его членов. Если вы работали с указателями в Java, C или другом подобном языке, то, возможно, узнаете эту концепцию как использование указателей. Однако за все это приходится платить. Для того чтобы получить доступ к значению и изменить его, теперь необходимо получить доступ к атрибуту значение объекта. Вот пример:

js
_hello.value = "Некоторое другое значение";
_hello.value = "Некоторое другое значение";

Но, в то же время, ничего не изменилось в способе доступа к этой переменной в шаблоне:

vue
<div>{{_hello}}</div>
<div>{{_hello}}</div>

Кроме того, каждый раз, когда переменная объявляется как реактивная с помощью конструктора ref(), необходимо ссылаться на ее значение в формате constant_name.value, и как constant_name в шаблоне (HTML). Когда имя константы используется в шаблоне, Vue уже знает, как получить доступ к ее значению, и вам не нужно ссылаться на нее явно, как в JavaScript.

Совет

Выработайте или примите соглашение о коде (code convention), чтобы знать, когда идентификатор относится к переменной, константе, функции, классу и т. д.

Изучение встроенных директив в Vue 3

В Vue также предусмотрены специальные атрибуты HTML, называемые директивами. Директива объявляется в открывающем теге HTML-элемента и влияет на динамическое поведение или функциональность этого элемента. Мы также можем создавать собственные директивы в Vue. Те из них, которые предоставляются фреймворком, имеют специальную нотацию, начинающуюся с v-. В рамках данной книги рассмотрим наиболее часто используемые директивы Vue:

v-bind: (сокращение ":")

Директива v-bind: связывает значение HTML-атрибута со значением переменной JavaScript. Если переменная является реактивной, то при каждом обновлении ее значения оно будет отражаться в html. Если переменная не реактивная, то она будет использоваться только один раз при первоначальном рендеринге HTML. Чаще всего мы используем только сокращенный префикс : (двоеточие). Например, реактивная переменная my_profile_picture содержит веб-адрес к картинке:

html
<img :src="my_profile_picture" />
<img :src="my_profile_picture" />

Атрибут src получит значение переменной my_profile_picture

v-show

Эта директива показывает или скрывает элемент, не удаляя его из документа. Она эквивалентна модификации атрибута CSS display. Она ожидает переменную, которая дает булево значение (или то, что может быть интерпретировано как true или непустое). Например, переменная loading имеет булево значение:

vue
<div v-show="loading">...</div>
<div v-show="loading">...</div>

Этот div появится, когда переменная loading будет равна true.

Важно иметь в виду, что v-show будет использовать стиль объекта, чтобы отобразить его или нет, но элемент все равно будет частью Document Object Model (DOM)

v-if, v-else и v-else-if

Эти директивы ведут себя так же, как и условные предложения в JavaScript, показывая и скрывая элемент в зависимости от значения, определяемого переданным выражением. Они похожи на v-show в том смысле, что показывают или скрывают элемент, но с той разницей, что они полностью удаляют элемент из DOM. Из-за этого при неправильном использовании в больших масштабах с элементами, часто меняющими свое состояние, они могут быть дороги в вычислительном отношении, так как фреймворку приходится выполнять больше операций для манипулирования DOM, в отличие от v-show, когда нужно изменить только стиль отображения.

Совет

Используйте v-if для показа или отображения элементов, которые не будут переключаться после показа или скрытия (и предпочтительно, если начальное состояние скрыто). Используйте v-show, если элемент будет часто показываться/скрываться. Это улучшит производительность при отображении больших списков элементов.

v-for и :key

В сочетании эти два атрибута ведут себя подобно циклу for в JavaScript. Они создают столько копий элемента, сколько прописано в итераторе, каждая из которых имеет соответствующее интерполированное значение. Это очень удобно для отображения коллекций элементов данных. Атрибут :key используется внутри цикла для более эффективного отслеживания изменений и должен ссылаться на уникальный атрибут элемента, по которому выполняется цикл, - например, на поле id объекта или на индекс в массиве, если индексы не меняются. Вот пример:

vue
<span v-for="i in 5" :key="i"> {{i}} </span>
<span v-for="i in 5" :key="i"> {{i}} </span>

Таким образом на веб-странице будет отображено пять элементов span с интерполяцией i, что выглядит следующим образом:

1 2 3 4 5

v-model

Эта директива - чистая магия. При присоединении к элементу ввода (input, textarea, select и т.д.) она присваивает значение, возвращаемое HTML-элементом, ссылаемой переменной, поддерживая тем самым синхронизацию состояния DOM и JavaScript, что называется двусторонним связыванием. Вот пример:

vue
<input type="text" v-model="name" \>
<input type="text" v-model="name" \>

Когда пользователь вводит текст в HTML, переменной name в JavaScript сразу же присваивается это значение. В этих примерах мы используем примитивные типы данных, такие как числа и строки, но мы можем использовать и более сложные значения, такие как объекты или массивы. Подробнее об этом будет рассказано в главе 4 Композиция пользовательского интерфейса с компонентами, когда мы рассмотрим компоненты в деталях.

v-on: (и сокращение @)

Эта директива ведет себя несколько иначе, чем предыдущие. Она ожидает не переменную, а функцию или выражение, и связывает HTML-событие с функцией JavaScript для его выполнения. Событие должно быть объявлено сразу после двоеточия. Например, чтобы отреагировать на событие click на кнопке мыши, мы напишем следующее:

vue
<button v-on:click="printPage()">Print</button>
<button v-on:click="printPage()">Print</button>

Когда кнопка вызывает событие click, будет выполнена функция JavaScript printPage(). Кроме того, для этой директивы чаще используется сокращение, которое мы и будем использовать в дальнейшем в этой книге: просто замените v-on: на @. Тогда предыдущий пример превратится в следующий:

vue
<button @click="printPage()">Print\</button>
<button @click="printPage()">Print\</button>

Полный список встроенных директив можно найти в официальной документации здесь: https://vuejs.org/api/built-in-directives.html. По мере продвижения вперед мы увидим и другие.

До сих пор мы видели, что приложения Vue 3 строятся с помощью компонентов, которые мы можем использовать в нашем HTML и которые мы создаем с помощью SFC. Фреймворк также предоставляет нам директивы для работы с элементами HTML, но это еще не все. В следующем разделе мы увидим, что фреймворк также предоставляет несколько удобных готовых компонентов, которые мы можем использовать.

Встроенные компоненты

Фреймворк также предоставляет нам несколько встроенных компонентов, которые мы можем использовать, не импортируя их явно в каждый SFC. Я привел здесь небольшое описание каждого из них, поэтому за синтаксисом и примерами можно обратиться к официальной документации (см. https://vuejs.org/api/built-in-components.html):

  • Transition и TransitionGroup - это два компонента, которые могут работать вместе для обеспечения анимации и перехода элементов и компонентов. Они требуют создания CSS-анимации и классов переходов для реализации анимации при вставке или удалении элементов на странице. В основном (или часто) они используются при отображении списка элементов с помощью директив v-for/:key или v-if/v-show.

  • KeepAlive - это еще один компонент-обертка (то есть окружение других компонентов), используемый для сохранения состояния (внутренних переменных, элементов и т.д.), когда компонент, обернутый в него, больше не отображается. Обычно при размонтировании экземпляры компонентов очищаются и "собираются в мусор". KeepAlive сохраняет их в кэше, чтобы их состояние было восстановлено, когда они снова появятся на экране.

  • Teleport - совершенно новый компонент в Vue 3, который позволяет переносить HTML компонента в другое место на странице, даже за пределы дерева компонентов вашего приложения. Это помогает в некоторых случаях, когда необходимо вывести информацию за пределы компонента, но она должна быть обработана внутренней логикой компонента.

  • Suspense - новый компонент в Vue 3, но пока он находится в экспериментальной стадии, поэтому его будущее на момент написания статьи не определено. Основная идея заключается в отображении "запасного" контента до тех пор, пока все асинхронные дочерние компоненты/элементы не будут готовы к рендерингу. Он предоставляется для удобства, поскольку существуют шаблоны, которые можно использовать для решения этой проблемы. Мы рассмотрим их позже.

  • Component-is - это специальный элемент, который будет загружать компонент во время выполнения, как предписано содержимым переменной - например, если нам нужно отобразить компонент на основе значения переменной, а использование других директив может быть громоздким. Она также может быть использована для вывода HTML-элементов. Рассмотрим пример:

vue
<script setup>
 import EditItem from "EditItem.vue";
 import ViewItem from "ViewItem.vue";
 import { ref } from "vue";
@@ -138,7 +138,7 @@
   <component :is="action"></component>     
   <button @click="action = 'EditItem'">Edit</button>
 </template>

В этом простом примере, когда пользователь нажмет кнопку Edit, значение action изменится на EditItem, и компонент заменится. Документацию можно найти здесь:https://vuejs.org/api/built-in-special-elements.html.

Поняв, что такое фреймворки и компоненты, мы теперь лучше подготовлены к дальнейшей работе.

Кодовые соглашения (code conventions) в книге

В этой книге мы будем использовать набор кодовых соглашений и рекомендаций, которые являются хорошей практикой для Vue 3. Они помогут вам не только понять примеры, приведенные в этой книге, но и код, который вы можете встретить в природе, поскольку все больше разработчиков используют его. Давайте начнем с самого начала.

Переменные и пропсы

Они всегда пишутся в нижнем регистре, а пробелы заменяются знаком подчеркивания, например, total_count и person_id.

Константы

Ссылки на инжектируемые объекты начинаются со знака $, например, $router, $modals и $notifications.

Ссылки на реактивные данные начинаются с _ и набираются в змеином регистре (snake case), например, _total и _first_input.

Ссылки на константные значения обозначаются заглавными буквами, например, OPTION и LANGUAGE_CODE.

Функции-конструкторы для инжектируемых зависимостей будут начинаться с use, например, const $store=useStore().

Имена классов и компонентов

Они записываются в PascalCase (каждое слово начинается с буквы верхнего регистра), например, Person, Task и QueueBuilder.

Функции, методы, события и имена файлов

Они пишутся в CamelCase, например, doSubscribe() и processQueue().

"Экземпляры

Экземпляры будут иметь абстрактное имя, за которым следует слово Service в случае обычных JavaScript-объектов, предоставляющих функции, Model для моделей состояний и так далее. Мы будем использовать сервисы для инкапсуляции функциональности.

Например: const projectService=new ProjectService().

Совет

В своей команде всегда используйте кодовые соглашения, с которыми все согласны. Это сделает код более читаемым и удобным для сопровождения. Можно также порекомендовать использовать линкер (процессор для фиксации соглашений в коде).

Как уже говорилось, эти соглашения набирают популярность, поэтому вы можете встретить их во многих проектах. Однако они не являются обязательными стандартами и уж точно не предписаны фреймворком. Вы можете писать все заглавными буквами, если это ваш стиль, но на самом деле важно, чтобы вы и ваша команда определили и соблюдали свои собственные соглашения в последовательной манере. В конечном итоге важно, чтобы при написании кода у всех нас был общий язык.

Подведение итогов

В этой главе мы прошли путь от основ библиотек и фреймворков до директив Vue 3, компонентов и даже кодовых соглашений. Эти понятия все еще немного абстрактны, поэтому мы будем доводить их до реализации по мере продвижения по книге и работы с реальным кодом. Однако сейчас мы готовы для изучения принципов проектирования и паттернов в следующей главе.

Вопросы для проверки

Для того чтобы помочь вам закрепить содержание этой главы, вы можете воспользоваться следующими вопросами:

  • В чем разница между библиотекой и фреймворком?
  • Почему Vue является "прогрессивным" фреймворком?
  • Что такое однофайловые компоненты?
  • Какие директивы наиболее часто используются при разработке Vue?
  • Почему важны соглашения в коде?

Если вы можете быстро ответить на эти вопросы в уме, то вы готовы к работе! Если нет, то, возможно, вам стоит кратко просмотреть главу, чтобы убедиться, что у вас есть основа для дальнейшей работы.

- + \ No newline at end of file diff --git a/book/ru/index.html b/book/ru/index.html index 39e5f37c6..55907fa7c 100644 --- a/book/ru/index.html +++ b/book/ru/index.html @@ -7,10 +7,10 @@ - + - + @@ -27,7 +27,7 @@
Skip to content

О книге

Vue.js 3 Design Patterns and Best Practices

Автор: Pablo Garaguso

В книге рассмотрен широкий спектр тем, начиная с самых основ Vue и заканчивая развертыванием конечного продукта.

  • В главе 1, Фреймворк Vue 3, мы познакомимся с ключевыми понятиями Vue и различными вариантами синтаксиса, доступными для написания компонентов.
  • В главе 2, Принципы и паттерны проектирования программного обеспечения, мы подробно рассмотрим важные концептуальные и проверенные паттерны для создания архитектуры нашего кода
  • В главе 3, Установка рабочего проекта, и главе 4, Композиция пользовательского интерфейса с помощью компонентов, мы узнаем, как начать проект Vue и как воплотить дизайн в рабочий код
  • В главе 5, Одностраничные приложения, и главе 6, Прогрессивные веб-приложения, возможно, самых важных главах, мы узнаем, как создавать продвинутые приложения с навигацией и установкой через собственные функции браузера
  • В главе 7, Управление потоком данных, и главе 8, Многопоточность с Web Workers, мы узнаем больше о том, как повысить производительность и управлять потоком информации с помощью хороших практик
  • Глава 9, Тестирование и контроль исходных текстов, представим инструменты для автоматизации программных тестов, обеспечивающих хорошее качество нашего кода
  • Глава 10, Развертывание приложения, дадим представление о шагах и ресурсах, необходимых для публикации и защиты нашего сервера с помощью безопасного протокола
  • Глава 11, Бонусная глава - UX, даст нам взгляд с точки зрения пользователя и общую лексику для сотрудничества с дизайнерами UI/UX.

Я выражаю Вам признательность за преданность этой дисциплине и благодарю за прочтение этой книги. Желаю Вам благополучия и блестящих успехов в дальнейших начинаниях и профессиональной карьере.

Искренне,

Пабло Давид Гарагусо

www.pdgaraguso.com

- + \ No newline at end of file diff --git a/book/ru/not-implemented.html b/book/ru/not-implemented.html index 5634b939e..efdf29a9f 100644 --- a/book/ru/not-implemented.html +++ b/book/ru/not-implemented.html @@ -7,10 +7,10 @@ - + - + @@ -27,7 +27,7 @@ - + \ No newline at end of file diff --git a/deployment/ci-cd.html b/deployment/ci-cd.html index c5bb95c43..f7d5a5b82 100644 --- a/deployment/ci-cd.html +++ b/deployment/ci-cd.html @@ -7,10 +7,10 @@ - + - + @@ -27,7 +27,7 @@
Skip to content

CI/CD

Что такое CI/CD?

CI/CD (Continuous Integration, Continuous Delivery — непрерывная интеграция и доставка) — это технология автоматизации билда, тестирования и развертывания разрабатываемого проекта.

Другими словами, процесс перехода лежащего в репозитории кода в рабочий продукт на облачном сервере, например.

Элементы CI/CD полезны не только девопс инженеру, но и простому фронтендеру, позволяя ему после git commit/push изменений кода получить рабочий сайт, например, на GitHub Pages без дополнительных действий.

Основные инструменты для CI/CD: GitHub Actions, GitLab CI/CD, Jenkins, Trevis

- + \ No newline at end of file diff --git a/deployment/docker.html b/deployment/docker.html index fa0743235..55863b1b9 100644 --- a/deployment/docker.html +++ b/deployment/docker.html @@ -7,10 +7,10 @@ - + - + @@ -27,7 +27,7 @@ - + \ No newline at end of file diff --git a/deployment/github-actions.html b/deployment/github-actions.html index d8aa951fe..6665fc28f 100644 --- a/deployment/github-actions.html +++ b/deployment/github-actions.html @@ -7,10 +7,10 @@ - + - + @@ -335,7 +335,7 @@ cd $backup_dir && rm -rf work logs images; cd $root_backup_dir && dirs_to_be_removed=`ls -dt "$root_backup_dir/"* | tail -n +$backups_remove_count`; rm $dirs_to_be_removed -rf; - + \ No newline at end of file diff --git a/deployment/hosting.html b/deployment/hosting.html index f7bf8d5dd..20070bbb9 100644 --- a/deployment/hosting.html +++ b/deployment/hosting.html @@ -7,10 +7,10 @@ - + - + @@ -27,7 +27,7 @@
Skip to content

Хостинг

Где разместить сайт?

После билда фронтенд проекта вы получаете набор html/css/js/jpeg и других статичных файлов, которые надо разместить на вебсервере, чтобы к вашему сайту был доступ.

Варианты размещения с бесплатными планами:

Также многие облачные провайдеры (Amazon, Google, Oracle, Microsoft) предоставляют бесплатные тарифы с возможностью получить виртуальный сервер, на котором можно установить вебсервер (Nginx, Apache) и захостить свой сайт самостоятельно. В этом случае на нем же можно разместить и бэкенд.

Домен

Купить домен сейчас очень просто и недорого (от 200 рублей в год), в связи с чем рекомендуется это сделать. GitHub Pages и другие хостеры позволяют подключить кастомный домен к вашему сайту. Поддомены удобны для организации окружения разработки (environments):

  • dev.website.com
  • dev-api.website.com
  • website.com
  • api.website.com
  • docs.website.com
SSL сертификаты

Современные браузеры требуют, чтобы сайт был доступен по HTTPS протоколу. Для этого для вашего домена необходим SSL сертификат. Хостинг провайдеры типа Firebase или Github Pages обеспечат вам сертификат сами. Если вы хостите свой сайт самостоятельно на облачном сервере, то можно сгенерировать сертификат с помощью программы CertBot.

- + \ No newline at end of file diff --git a/development/assets.html b/development/assets.html index a88a166c8..45d2b2d81 100644 --- a/development/assets.html +++ b/development/assets.html @@ -7,10 +7,10 @@ - + - + @@ -259,7 +259,7 @@ // import a root field as named exports - helps with tree-shaking! import { field } from "./example.json"; - + \ No newline at end of file diff --git a/development/building.html b/development/building.html index a5594001c..9a150ba44 100644 --- a/development/building.html +++ b/development/building.html @@ -7,10 +7,10 @@ - + - + @@ -81,7 +81,7 @@ npx vite-bundle-visualizer -t raw-data
npx vite-bundle-visualizer
 npx vite-bundle-visualizer -t list
 npx vite-bundle-visualizer -t raw-data
- + \ No newline at end of file diff --git a/development/ide.html b/development/ide.html index f6fe09ab1..d0cbdacaf 100644 --- a/development/ide.html +++ b/development/ide.html @@ -7,10 +7,10 @@ - + - + @@ -523,7 +523,7 @@ "vue.config.*": "*.env, .babelrc*, .codecov, .cssnanorc*, .env.*, .envrc, .htmlnanorc*, .lighthouserc.*, .mocha*, .postcssrc*, .terserrc*, api-extractor.json, ava.config.*, babel.config.*, contentlayer.config.*, cssnano.config.*, cypress.*, env.d.ts, formkit.config.*, formulate.config.*, histoire.config.*, htmlnanorc.*, jasmine.*, jest.config.*, jsconfig.*, karma*, lighthouserc.*, playwright.config.*, postcss.config.*, puppeteer.config.*, rspack.config.*, svgo.config.*, tailwind.config.*, tsconfig.*, tsdoc.*, uno.config.*, unocss.config.*, vitest.config.*, webpack.config.*, windi.config.*" } }
ESlint

Линтер - правая рука кодера. Он проверяет ошибки, форматирует код, делает еще много полезного

В то же время, хорошо настроить ESlint - довольно нетривиальная задача. Множество плагинов к нему, часть устаревшие, многие конфликтуют между собой.

Поэтому для не очень изощренных знатоков ESlint-a самое лучшее воспользоваться готовым решением. Второй человек в экосистеме Vue Antony Fu поделился своим конфигом

Для его установки достаточно добавить @antfu/eslint-config пакет в package.json devDependencies. Если заглянуть внутрь, там будет десятки подобранных пакетов и настроек.

К сожалению, форматирование <style> блока во .vue файлах не работает, поэтому приходится еще и включать Prettier в ручном режиме.

Онлайн песочницы для Vue 3
Еще программы, полезные в веб разработке
  • Postman - запросы к API, создание API
  • Xshell - удобный SSH клиент
  • HeidiSQL - клиент для доступа к SQL базам данных
Какая конфигурация компьютера подходит для фронтенд разработки?

Оперативной памяти минимум 16Гб и хороший (быстрый) SSD диск, всё остальное вторично, включая процессор. Потратьте лучше деньги на качественный второй монитор 22+ дюймов, удобную клавиатуру и мышку.

Для фулстек разработки (и не только) удобно еще иметь мини-ПК, куда переносится база данных, вебсервер и другие [микро]сервисы. Он может работать как сервер, без монитора и клавиатуры.

Также на него можно поставить репозиторий исходного кода. С основной машины подсоединение идет в VS Code через SSH Remote connection. В итоге и бэк, и фронт (Node.js) запускаются на твоем минисервере, и твой ноут больше не греется и не пытается взлететь с помощью бешено вращающихся вентиляторов.

Работать так значительно производительней (MySQL, вебсервера, Docker крутятся на Linux быстрей и надёжней, как и Nodе.js), комфортней и тише. Кулер мини-ПК в штатном режиме включается только на пару секунд при загрузке ОС.

- + \ No newline at end of file diff --git a/development/libraries.html b/development/libraries.html index a87274a03..e9cfb32e9 100644 --- a/development/libraries.html +++ b/development/libraries.html @@ -7,10 +7,10 @@ - + - + @@ -27,7 +27,7 @@
Skip to content

Подскажите удобную библиотеку

Для работы с датами

moment безвозвратно устарел. Есть day.js и day-fnc.js

Однако в 95% случаев хватает возможностей стандартного JavaScript Intl пакета

Для UI компонентов

Существует достаточно много CSS и UI библиотек

Вот в этой статье есть небольшой обзор их тяжеловесности

Quasar и PrimeVue выглядят солидно.

- + \ No newline at end of file diff --git a/development/misc.html b/development/misc.html index 4356ba023..cb0974687 100644 --- a/development/misc.html +++ b/development/misc.html @@ -7,10 +7,10 @@ - + - + @@ -41,7 +41,7 @@ // is NOT OK b = { x: 2 };

Реализации реактивных переменных в Vue 2 и Vue 3 отличаются. Во Vue 2 была своя (фреймворка) реализация отслеживания изменений. Во Vue 3 для этого используется объект Proxy, введенный в ES6. Из-за поддержки данного функционала на уровне языка (JavaScript engine), соответствующий код фреймворка получается эффективней и проще.

Reactive непосредственно использует Proxy объект.

Ref на объекте использует напрямую Reactive для отслеживания изменения внутри объекта, и создает и хранит массив зависимостей переменной для примитивов и объектов в случае их замены.

Если хотите претенциозной эффективности - используйте на объектах Reactive, на примитивах - Ref. В ином случае можно все делать через Ref.

ShallowRef

Когда у вас массив с большим количеством элементов, но данные внутри элементов массива не меняются, а может меняться только сам массив (добавление элементов, удаление, замена массива) - используйте ShallowRef.

Он работает как Ref, но не отслеживает изменения внутри элементов массива, что дает значительное улучшение производительности.

Миксины

Нужно забыть о них как о страшном сне. Миксины как паттерн множественного наследования являются очень плохой архитектурной практикой и должны быть избегаемы. Во Vue 2 в самом фреймворке не было возможности сделать для компонент общей часть стейта и методов, поэтому использовались миксины. Во Vue 3 появилось Composition API и миксины стали не нужны.

- + \ No newline at end of file diff --git a/development/stores.html b/development/stores.html index f1cda5d5f..b150a1179 100644 --- a/development/stores.html +++ b/development/stores.html @@ -7,10 +7,10 @@ - + - + @@ -27,7 +27,7 @@
Skip to content

State management во Vue 3

Зачем нужен State management?

Иногда в приложении нужно передать реактивные данные или функцию из одного компонента в другой, и эти компоненты не принадлежат одной иерархии. Механизмы пропсов/ивентов или provide/inject не подходят для этого. Поэтому во Vue 2 появился Vuex - state management библиотека, которая позволяет хранить реактивный стейт и предоставлять доступ к нему отовсюду.

Библиотека управления стейтом на фронтенде обычно называется "стором".

Как можно передать реактивные данные из одного компонента в другой во Vue 3?
  • Если один компонент является прямым потомком другого - пропсы и ивенты
  • Если один компонент непрямой потомок другого - provide/inject или проп/ивент дриллинг (плохая практика)
  • Если они в разных ветках иерархии - стор или Vue 3 ref/reactive

Vue 3 ref/reactive - это когда в отдельном js модуле вы определяете и экспортируете реактивную переменную:

export const userLoggedIn = ref(false);
export const userLoggedIn = ref(false);

После чего она доступна во всём приложении через импорт данного модуля.

Однако, расшаривать просто переменную - архитектурно плохая идея. Обычно вокруг этой переменной есть бизнес логика, которую и надо сделать доступной.

Например, для аутентификации нужен не только сам факт, что пользователь залогинился, но и сопутствующие методы - login(), logout(), register(), isAuthenticated(). Синтез некоего стейта и сопутствующей бизнес логики дал так называемые composable функции во Vue 3.

В некотором смысле - аналог объекта в ООП.

Что такое стор (store) на фронтенде?

A Store (like Pinia) is an entity holding state and business logic that isn't bound to your Component tree. In other words, it hosts global state. It's a bit like a component that is always there and that everybody can read off and write to.

Стор (например, Pinia) — это сущность, содержащая состояние и бизнес-логику, которая не привязана к вашему дереву компонентов. Другими словами, здесь находится глобальное состояние. Это что-то вроде компонента, который всегда присутствует, и который каждый может считывать и писать в него.

Официальная документация Pinia

Выглядит как очень неудачное, двусмысленное и запутывающее определение.

С точки зрения разработчика не фронтенда (по сути любой другой язык, кроме JavaScript, плюс частично JavaScript), аналогом конструкции с названиемстор будет база данных - SQL, NoSQL или кэширующий Redis. Там есть аналоги стейта и геттеров (View в SQL БД). Но в 99.99% случаях в базе данных не будет никакой бизнес логики, за исключением ограничений для консистентности данных (например, unique или foreign keys).

С точки зрения разработчика не фронтенда, сторы фронтенда - это просто объекты / stateful сервисы, построенные по шаблону синглтон. Называть их "глобальными сторами" как минимум нелогично.

Скорей всего, это произошло исторически. Сперва был один Vuex, он был один стор и глобален. Потом у него появились модули. Потом у Pinia эти модули стали независимы и расползлись по всему приложению. В итоге, в приложении куча мелких локальных (по области использования) сторов, каждый из которых считает себя глобальным, даже если его использует 2-3 компонента из 1000 на проекте, и даже если в этом сторе 1% - стейта, и 99% - бизнес и сопутствующей логики.

В этом плане использование композабл функций для той же цели (an entity holding state and business logic that isn't bound to your Component tree) - намного более логично. И называть их следует не useAuthStore, а useAuth или useAuthService.

Vuex или Pinia?

Во Vue 3 основной внешней библиотекой управления стейтом стала Pinia. В отличие от Vuex у нее есть поддержка TypeScript, она удобней и, естественно, пользуется преимуществами Vue 3.

Vuex официально устарел (deprecated)

Pinia или Composable functions?

Во Vue 3 появилось нечто, делающее отдельную библиотеку для управления стейтом ненужной. А именно, реактивные типыRef и Reactive, которыми можно пользоваться за пределами компонент. Стало возможным делать свои сторы на основе composable функций и подключать их в любом компоненте.

Основное декларируемое отличие Pinia - интеграция с Vue DevTools, плагины и SSR поддержка. Однако, нужно ли ему то или другое, каждый разработчик решает сам. Работать с composables в DevTools вполне комфортно.

Composable функция, в свою очередь, может иметь как глобальный, так и локальный (переменные объявлены внутри функции) стейты. Это бывает удобно в определенных случаях - можно создать несколько экземпляров composable функций, каждая со своим стейтом. Например, когда у вас на сайте несколько новостных виджетов, различающихся только категорией новостей.

Кроме того, с функциональной точки зрения composable функции имеют полный доступ ко всему Vue Reactivity API, что делает их гибче, чем Pinia.

Composable функции с глобальным стейтом не работают в SSR режиме.

Что касается производительности, то по тестам на изменениях Reactive Pinia примерно в полтора раза медленней Vue 3 Reactive, а на Ref - в 20 раз. Это потому, что Ref (примитивные типы) в Pinia становится частью Reactive.

Также надо помнить, что любая зависимость (в данном случае библиотека Pinia) может принести проблемы, аналогичные с ситуацией "RIP Vuex", когда библиотека умирает, устаревает, перестает поддерживаться или в ней находят уязвимости. Composable функции, в свою очередь, выглядят основательным нововведением во Vue фреймворк.

Как разделять логику между компонентом и composable функциями?

Удобно представлять это как MVC шаблон, где роль View (и частично Controller) выполняют компоненты, отвечающие преимущественно за визуализацию, а логика и модель (Model и частично Controller) приходятся на композабл функции и их реактивный стейт.

Чтобы понять, что класть в композабл, а что в компонент (который может состоять из нескольких компонент), представьте, что вы меняете компонент на другой - отображающий ваши данные как-то иначе. В идеале, модель (композабл) должен остаться тем же самым, вы переписываете только компонент, в котором логика, ответственная только за отображение.

В то же время, логика (Controller) может делиться между компонентом и композаблом. Например, валидация данных формы может происходить в компоненте (проверка, что поле заполнено), в компоненте с помощью сторонней утилиты (проверка, что пароль - "сложный") и в композабле (проверка, что username - уникален)

- + \ No newline at end of file diff --git a/development/testing.html b/development/testing.html index d91abffe1..d57d305c4 100644 --- a/development/testing.html +++ b/development/testing.html @@ -7,10 +7,10 @@ - + - + @@ -27,7 +27,7 @@
Skip to content

Тестирование

Нужно ли тестирование на фронтенде?

Тесты бывают нескольких типов, среди них - unit тесты и интеграционные (e2e) теcты

Unit тестированием во Vue занимаются Vitest, Jest

С тестированием на фронте нужно быть аккуратней, так как написание и переписывание тестов зачастую может занять время, сопоставимое с самой разработкой. В то же время, полезность этих тестов будет под большим вопросом. Их целесообразность проявляется на больших проектах с большим количеством разработчиков. Там unit тесты также отнимают время, но снижают вероятность, что кто-то что-то испортит. В то же время на стартапе unit тесты далеко не самый нужный ингридиент для быстрого создания MVP.

Фронтенд разработка в этом аспекте очень сильно отличается от бэкенд разработки, где unit тесты действительно полезны.

Хорошая статья на эту тему - Unit Test Fetish

Что такое e2e тесты?

На фронте, особенно для веб приложения, которое уже в продакшне и должно время от времени обновляться, важны e2e тесты.

e2e (end-to-end) тестирование — это процесс тестирования программного обеспечения, который имитирует реальные действия пользователей на уровне интерфейса.

При этом будет запущен браузер (обычно, в headless режиме - без UI), и он по написанным скриптам будет проверять работу сайта - наличие элементов на странице, возможность логина и т.п.

Основные средства для e2e тестирования - Cypress, WebdriverIO

При CI/CD проекта прогон тестов - один из основных моментов наряду с линтингом и билдом.

- + \ No newline at end of file diff --git a/en/backend/api.html b/en/backend/api.html index 2582e553d..468b4a9fe 100644 --- a/en/backend/api.html +++ b/en/backend/api.html @@ -7,10 +7,10 @@ - + - + @@ -94,7 +94,7 @@ return await http.get("/api/users/user", params); }, };

http.js is a wrapper around requests to the server via your favorite library.

What is the convenience of abstracting the backend communication code from the main application code into a separate service?

You can easily replace axios with fetch or XHR, REST with JSON-RPC or WebSockets. The code in the components does not change and remains simple and explicit.

- + \ No newline at end of file diff --git a/en/backend/auth.html b/en/backend/auth.html index 618e68454..69fd1e29f 100644 --- a/en/backend/auth.html +++ b/en/backend/auth.html @@ -7,10 +7,10 @@ - + - + @@ -26,7 +26,7 @@
Skip to content

Authentication and authorization

What is authentication and authorization

Roughly speaking:

Authentication is when the system verifies that it is John Doe who logged in, for example, by checking his username and password

Authorization - when the system verifies that the user requesting the resource/action has the right to access it. For example, a senior manager has the right to delete an item in the admin, but a simple manager does not.

How to make an authentication system on the site

For SPA the most common way - on JWT tokens. There are many variants of this, depending on the requirements of the security level (John Doe's personal blog with guest comments and online store with deposits and bonuses - two big differences).

JWT is a standard for writing a small amount of information into a string (token) and signing it (cryptography). It is done by the backend. So only the backend can make sure that the token is written by it and has valid information in it.

There is no standard for token authentication as such, there are best practices.

Options:

  1. backend generates token (access token - AT) and puts it in httpOnly cookie. The frontend does not have access to the token, the browser just returns the cookie. This method is undeservedly rarely used, but it is quite reliable. The frontend removes all the hassles of manipulating AT.

Scenario:

  • Front logs in, gets user data from the backend and works with it. When receiving any 401 request, it directs the user to the login form and resets the user data to zero.
  • Back at login creates httpOnly cookie with token with certain lifetime. At each request it checks the token, determines the person to whom this token is issued and his rights, and then decides whether to allow access. If the lifetime of the token has expired, it returns 401.

2 The backend generates an access token (AT) and passes it to the front. The front saves it and sends it back each time. In essence the same as in the first case, plus unnecessary steps and the possibility of losing the token through XSS.

  1. two tokens are used - short-lived access token (AT) and longer-lived refresh token (RT) sent in httpOnly cookie. AT works as in the second case. When its lifetime expires, the backend checks the RT and if it is valid, refreshes the AT. RT expires - the user is sent to re-login.
Where to store access token on the frontend?

In 95% of cases in LocalStorage

What is oAuth and SSO?

oAuth - Login "via Google". Also when, for example, a user has the option on your site to save something to Google Drive. In order to get permission for your site to work with the user's Google Drive account, you ask the user to allow your site to access their account via Google. So we have four parts - Google (the authorization center), the third-party resource (Google Drive), your site, and the user

SSO - single sign-on - a user logs in to a certain company's portal once, and then has transparent access to its different services. For example, login to GMail and access to Google Drive, Google Photo and so on.

Does authentication via JWT give security?

Security is a very complex concept, and JWT authentication is just one of its elements. For critical applications, it is possible to capture the user's browser fingerprint and force the user to re-login as soon as they change. Same with IP. In this way you can fight AT theft. Also set very small AT lifetime if RT is used. But the main security measures are not related to authentication, but to constant monitoring of the system for suspicious actions.

Authorization

If it is necessary to give users different levels of access to site resources, it is common to use either RBAC (Role-based access control) or PBA (Policy-Based Authorization).

In the first case, users are assigned to roles (admin, manager, user) and the level of access is determined by the role.

In the second case, it is possible to set permissions for each user individually for any action in a more granular way.

It should be understood that on the front authorization is done for convenience (the user does not see the sections of the site that are forbidden to him), but the back is responsible for security - he must check each time whether the user has the right to access the requested resource, even if on the front it should not be visible. It is not very difficult to break the front end.

- + \ No newline at end of file diff --git a/en/backend/backend.html b/en/backend/backend.html index 363938595..b65a04a38 100644 --- a/en/backend/backend.html +++ b/en/backend/backend.html @@ -7,10 +7,10 @@ - + - + @@ -26,7 +26,7 @@
Skip to content

Options to leverage your backend for frontenders

How to test frontend on backend data?

There are many services that offer their API with different data for testing or full-fledged work

For example, jsonplaceholder.typicode.com.

Google "json placeholder".

Are there any free open APIs with real data?

Plenty. For example, here

Google public api.

You can also poke around relevant sites in DevTools / Network for endpoints with data in a suitable format

How to make your own backend?

If you already know JavaScript, it should not be a problem to install and run Node.js with an HTTP server.

Node.js is not a very popular server for the Internet, but for a small project will do.

In absolute terms, it is easiest to install and start working with Nginx and PHP

Most major cloud providers (Amazon, Google, Oracle, Microsoft) provide free plans with the ability to run a virtual server. By putting what is required there, you can want both a back end and a front end bundle.

What is BaaS (Backend as a service)?

It is a cloud solution where the backend in the form of a database and its access interface, and possibly the ability to use some logic, is provided by a BaaS provider.

For example, a NoSQL database and access to it is provided by Google using its Firebase service

Alternative with PostgreSQL - Supabase

That is, your frontend will access their specific endpoints and get the services you need - for example, to save and query data in the database.

Both services provide the ability to do authentication on the site. Thus, a front-end developer can write an application using such a service without writing his own backend code and without placing it somewhere on a server on the Internet.

These services have free plans with rather large resources.

Business logic on BaaS

Most BaaS services provide not only CRUD access to their database, but also the ability to write custom logic in the form of Cloud Functions in Firebase, Edge Functions in Supabase, AWS Lambda in Amazon, etc.

These functions are code in some programming language that will be called when a certain backend endpoint is accessed.

In case a frontend developer wants to make a full-fledged application, but doesn't want to bother with a standalone backend, this is a pretty good and very economical solution.

How Edge/Cloud/Lamda features work

It's basically a backend in miniature

Your front end accesses a given endpoint (via the BaaS provider's BaaS service API gateway) - e.g. /api/somefunc

There lies a script written by you in js or other programming language, which is executed, has access to the database and can do other things (load data from the internet for example).

Then the script generates a result and returns it to your front end.

- + \ No newline at end of file diff --git a/en/backend/cors.html b/en/backend/cors.html index f491030a5..6ec6b8fa4 100644 --- a/en/backend/cors.html +++ b/en/backend/cors.html @@ -7,10 +7,10 @@ - + - + @@ -30,7 +30,7 @@ Origin: client-1.com
GET /info HTTP/1.1
 Host: server-site.com
 Origin: client-1.com

If the server at www.server-site.com allows the request source page to access data from the domain, the Access-Control-Allow-Origin line with the name of the declared domain will appear in its response to the request:

Access-Control-Allow-Origin: https://client-1.com
Access-Control-Allow-Origin: https://client-1.com

If the server to which access is requested does not add the specified string to the response, the client browser will return an error code instead of the info file data.

If the server allows pages from any third-party domain to access the resource, the response will contain the "*" mask.

Access-Control-Allow-Origin: *
Access-Control-Allow-Origin: *

If the server allows access not to all but a few third-party clients, the server response contains the names of all these domains printed as separate lines or separated by spaces:

Access-Control-Allow-Origin: https://client-1.com https://client-2.com https://client-3.com
Access-Control-Allow-Origin: https://client-1.com https://client-2.com https://client-3.com
Problems with CORS

CORS problems can occur only when a resource is accessed by a browser, not by a separate program like Postman or other backend.

As a temporary solution CORS proxy, which becomes an intermediary between frontend and backend, or browser extensions can help during development.

Vite provides such proxy for development.

- + \ No newline at end of file diff --git a/en/backend/protocols.html b/en/backend/protocols.html index c833120c3..3be908353 100644 --- a/en/backend/protocols.html +++ b/en/backend/protocols.html @@ -7,10 +7,10 @@ - + - + @@ -26,7 +26,7 @@
Skip to content

Protocols. To REST or not to REST?

REST, WebSockets, JSON-RPC

For a beginner, of course, it's more convenient to start with REST - requests to the server in any way.

For the more experienced, especially fullstackers, I suggest to take a look at JSON-RPC.

WebSockets is convenient because it gives bidirectional communication (the server can send messages to the client), but requires special software on the backend.

Why JSON-RPC?

After an experience with JSON-RPC, communication with back end is usually never the same again.

It gives order, clarity, rigor and at the same time flexibility. It greatly simplifies and makes code understandable both on the frontend and backend.

A variant of TypeScript implementation of frontend api service on JSON-RPC - here.

When using JSON-RPC, switching to WebSockets or other transport protocols will not cause any difficulties due to the unification of the message format.

How to organize reconnection of WebSocket connection on the front?

You need an Event bus, which will work as a proxy for incoming messages.

You can use mitt.

What is GraphGL?

A complex thing, an attempt to translate SQL query language for client-server queries on the web.

It has a rather specific use, mostly with third-party data providers via APIs.

For your own fullstack application - 99% unnecessary solution.

- + \ No newline at end of file diff --git a/en/deployment/ci-cd.html b/en/deployment/ci-cd.html index ebaeae46d..4f9754a00 100644 --- a/en/deployment/ci-cd.html +++ b/en/deployment/ci-cd.html @@ -7,10 +7,10 @@ - + - + @@ -26,7 +26,7 @@
Skip to content

CI/CD

What is CI/CD?

CI/CD (Continuous Integration, Continuous Delivery) is a technology for automating the build, testing and deployment of a project under development.

In other words, the process of transition of code lying in a repository into a working product on a cloud server, for example.

CI/CD elements are useful not only for a devops engineer, but also for a simple front-end developer, allowing him after git commit/push code changes to get a working site, for example, on GitHub Pages without additional actions.

Main tools for CI/CD: GitHub Actions, GitLab CI/CD, Jenkins, Trevis

- + \ No newline at end of file diff --git a/en/deployment/docker.html b/en/deployment/docker.html index 300d01972..f6289ae59 100644 --- a/en/deployment/docker.html +++ b/en/deployment/docker.html @@ -7,10 +7,10 @@ - + - + @@ -26,7 +26,7 @@ - + \ No newline at end of file diff --git a/en/deployment/github-actions.html b/en/deployment/github-actions.html index eb22edf1c..e43542324 100644 --- a/en/deployment/github-actions.html +++ b/en/deployment/github-actions.html @@ -7,10 +7,10 @@ - + - + @@ -334,7 +334,7 @@ cd $backup_dir && rm -rf work logs images; cd $root_backup_dir && dirs_to_be_removed=`ls -dt "$root_backup_dir/"* | tail -n +$backups_remove_count`; rm $dirs_to_be_removed -rf; - + \ No newline at end of file diff --git a/en/deployment/hosting.html b/en/deployment/hosting.html index b2752e343..32121ac3b 100644 --- a/en/deployment/hosting.html +++ b/en/deployment/hosting.html @@ -7,10 +7,10 @@ - + - + @@ -26,7 +26,7 @@
Skip to content

Hosting

Where to host a website?

After building a frontend project, you get a set of html/css/js/jpeg and other static files that need to be hosted on some webserver for your website to be online.

Hosting options with free plans:

Also, many cloud providers (Amazon, Google, Oracle, Microsoft) provide free plans with the ability to get a virtual server on which you can install a webserver (Nginx, Apache) and your website yourself. In this case, the backend can also be placed on it.

Domain

Buying a domain is now very easy and inexpensive (from $1 per year), so it is recommended to do so. GitHub Pages and other hosting providers allow you to connect a custom domain to your site. Subdomains are convenient for organizing development environments:

  • dev.website.com
  • dev-api.website.com
  • website.com
  • api.website.com
  • docs.website.com
SSL certificates

Modern browsers require a website to be accessible via HTTPS protocol. This requires an SSL certificate for your domain. Hosting providers like Firebase or Github Pages will provide you with the certificate themselves. If you host your site yourself on a cloud server, you can generate the certificate using CertBot software.

- + \ No newline at end of file diff --git a/en/development/assets.html b/en/development/assets.html index 908f9dd1b..94c3a61c9 100644 --- a/en/development/assets.html +++ b/en/development/assets.html @@ -7,10 +7,10 @@ - + - + @@ -258,7 +258,7 @@ // import a root field as named exports - helps with tree-shaking! import { field } from "./example.json";
- + \ No newline at end of file diff --git a/en/development/building.html b/en/development/building.html index b664e58cf..6457ac8dc 100644 --- a/en/development/building.html +++ b/en/development/building.html @@ -7,10 +7,10 @@ - + - + @@ -80,7 +80,7 @@ npx vite-bundle-visualizer -t raw-data
npx vite-bundle-visualizer
 npx vite-bundle-visualizer -t list
 npx vite-bundle-visualizer -t raw-data
- + \ No newline at end of file diff --git a/en/development/ide.html b/en/development/ide.html index 056d9877a..a189b71d4 100644 --- a/en/development/ide.html +++ b/en/development/ide.html @@ -7,10 +7,10 @@ - + - + @@ -522,7 +522,7 @@ "vue.config.*": "*.env, .babelrc*, .codecov, .cssnanorc*, .env.*, .envrc, .htmlnanorc*, .lighthouserc.*, .mocha*, .postcssrc*, .terserrc*, api-extractor.json, ava.config.*, babel.config.*, contentlayer.config.*, cssnano.config.*, cypress.*, env.d.ts, formkit.config.*, formulate.config.*, histoire.config.*, htmlnanorc.*, jasmine.*, jest.config.*, jsconfig.*, karma*, lighthouserc.*, playwright.config.*, postcss.config.*, puppeteer.config.*, rspack.config.*, svgo.config.*, tailwind.config.*, tsconfig.*, tsdoc.*, uno.config.*, unocss.config.*, vitest.config.*, webpack.config.*, windi.config.*" } }
ESlint

Linter is a coder's right hand. It checks for errors, formats code, and does many other useful things

At the same time, it is quite a nontrivial task to set up ESlint well. There are a lot of plugins for it, some of them are outdated, many of them conflict with each other.

That's why for not very sophisticated ESlint connoisseurs it's best to use a ready-made solution. The second person in Vue ecosystem Antony Fu shared his config.

To install it, just add the @antfu/eslint-config package to package.json devDependencies. If you look inside, there are dozens of picked packages and configurations.

Unfortunately, formatting the <style> block in .vue files doesn't work, so you have to enable Prettier in manual mode as well.

Online sandboxes for Vue 3
More programs useful in web development
  • Postman - API requests, API creation
  • Xshell - handy SSH client
  • HeidiSQL - client for accessing SQL databases
What computer configuration is suitable for frontend development?

At least 16GB RAM and a good (fast) SSD disk, everything else is secondary, including the processor. Spend your money on a quality second 22+ inch monitor, a comfortable keyboard and mouse.

For fullstack development (and not only) it is convenient to have a mini-PC where you can transfer database, webserver and other [micro]services. It can work as a server, without a monitor and keyboard.

You can also put a source code repository on it. From the main machine the connection goes to VS Code via SSH Remote connection. As a result, both back and front end (Node.js) run on your miniserver, and your laptop no longer gets warm and tries to take off with the help of frantically spinning fans.

It is much more productive (MySQL, webservers, Docker run faster and more reliably on Linux, as does Node.js), comfortable and quieter. The cooler of the mini-PC in normal mode is turned on only for a couple of seconds when the OS is booting.

- + \ No newline at end of file diff --git a/en/development/libraries.html b/en/development/libraries.html index a8efe2f10..0f5930e46 100644 --- a/en/development/libraries.html +++ b/en/development/libraries.html @@ -7,10 +7,10 @@ - + - + @@ -26,7 +26,7 @@
Skip to content

Tell me a handy library

For working with dates

moment is irretrievably obsolete. There's day.js and day-fnc.js.

However, in 95% of cases the capabilities of the standard JavaScript Intl package are sufficient

For UI components

There are quite a few CSS and UI libraries out there

Here in this article is a small overview of their heavyweight nature

Quasar and PrimeVue look solid.

- + \ No newline at end of file diff --git a/en/development/misc.html b/en/development/misc.html index c68a7bccf..389d5bc41 100644 --- a/en/development/misc.html +++ b/en/development/misc.html @@ -7,10 +7,10 @@ - + - + @@ -40,7 +40,7 @@ // is NOT OK b = { x: 2 };

The implementations of reactive variables in Vue 2 and Vue 3 are different. Vue 2 had its own (framework) implementation of change tracking. In Vue 3, the Proxy object introduced in ES6 is used for this purpose. Because of the support for this functionality at the language level (JavaScript engine), the corresponding framework code is more efficient and simpler.

Reactive uses the Proxy object directly.

Ref on an object uses Reactive directly to track changes within the object, and creates and uses an array of variable dependencies for primitives and objects in case they are replaced.

If you want pretentious efficiency, use Reactive on objects and Ref on primitives. Otherwise, you can do everything via Ref.

ShallowRef

When you have an array with a large number of elements, but the data inside the array elements does not change, but only the array itself can change (adding elements, deleting, replacing the array) - use ShallowRef.

It works like Ref but does not track changes inside array elements, which gives a significant performance improvement.

Mixins

We should forget about them like a bad dream. Mixins as a pattern of multiple inheritance is a very bad architectural practice and should be avoided. In Vue 2, the framework itself did not have a way to make the component part of the steit and methods common, so mixins were used. In Vue 3, the Composition API was introduced and mixins were no longer needed.

- + \ No newline at end of file diff --git a/en/development/stores.html b/en/development/stores.html index 0556a9ec2..3a28fd3dd 100644 --- a/en/development/stores.html +++ b/en/development/stores.html @@ -7,10 +7,10 @@ - + - + @@ -26,7 +26,7 @@
Skip to content

State management in Vue 3

Why State management?

Sometimes in an application you need to pass reactive data or a function from one component to another, and these components do not belong to the same hierarchy. Props/invents or provide/inject mechanisms are not suitable for this. That's why Vue 2 introduced Vuex, a state management library that allows you to store a reactive state and provide access to it from anywhere.

A frontend state management library is usually called a "store".

How can I pass reactive data from one component to another in Vue 3?
  • If one component is a direct descendant of another - props and events
  • If one component is an indirect descendant of another - provide/inject or prop/event dribbling (bad practice).
  • If they are in different branches of the hierarchy - store or Vue 3 ref/reactive

Vue 3 ref/reactive is when you define and export a reactive variable in a separate js module:

export const userLoggedIn = ref(false);
export const userLoggedIn = ref(false);

It is then available throughout the application via the import of this module.

However, it is architecturally a bad idea to just share a variable. Usually there is business logic around this variable, which should be made available.

For example, authentication requires not only the fact that the user is logged in, but also the associated methods - login(), logout(), register(), isAuthenticated(). Synthesizing some kind of steit and the accompanying business logic yielded the so-called composable functions in Vue 3.

In some sense, it is an analog of an object in OOP.

What is a store on the frontend?

A Store (like Pinia) is an entity holding state and business logic that isn't bound to your Component tree. In other words, it hosts global state. It's a bit like a component that is always there and that everybody can read off and write to.

Store (such as Pinia) is an entity that contains state and business logic that is not bound to your Component tree. In other words, this is where the global state resides. It's sort of like a component that is always present, and that anyone can read and write to.

_ Official Pinia documentation.

Looks like a very unfortunate, ambiguous and confusing definition.

From the perspective of a non-frontend developer (basically any language other than JavaScript, plus partially JavaScript), the analog of a construct called store would be a database - SQL, NoSQL or caching Redis. There are analogs of state and getters (View in SQL database). But in 99.99% of cases, there will be no business logic in the database except for data consistency constraints (e.g., unique or foreign keys).

From a non-frontend developer's perspective, frontend stores are just objects / stateful services built on a singleton pattern. Calling them "global stores" is at least illogical.

It's likely that this happened historically. First there was one Vuex, it was one store and global. Then it had modules. Then Pinia modules became independent and spread all over the application. As a result, the application has a bunch of small local (by area of use) storages, each of which considers itself global, even if it is used by 2-3 components out of 1000 on the project, and even if this storage has 1% of steate and 99% of business and related logic.

In this respect, using composable functions for the same purpose (an entity holding state and business logic that isn't bound to your Component tree) - is much more logical. And they should be called useAuth or useAuthService instead of useAuthStore.

Vuex or Pinia?

In Vue 3, Pinia has become the main external library for managing the stack. Unlike Vuex, it has TypeScript support, is more convenient, and naturally takes advantage of Vue 3.

Vuex is officially deprecated

Pinia or Composables functions?

In Vue 3 there is something that makes a separate library for managing the state unnecessary. Namely, reactive types Ref and Reactive that can be used outside of a component. It became possible to make your own storages on the basis of composable functions and connect them in any component.

The main declared difference of Pinia is integration with Vue DevTools, plugins and SSR support. However, whether he needs one or the other, each developer decides for himself. It is quite comfortable to work with composables in DevTools.

Composable function, in its turn, can have both global and local (variables are declared inside the function) states. This can be useful in certain cases - you can create several instances of composable functions, each with its own state. For example, when you have several news widgets on your site, differing only by news category.

Also, from a functional point of view, composable functions have full access to the entire Vue Reactivity API, which makes them more flexible than Pinia.

Composable functions with global states do not work in SSR mode.

As for performance, according to tests Pinia is about 1.5 times slower on Reactive changes than Vue 3, and 20 times slower on Ref. This is because Ref (primitive types) in Pinia becomes part of Reactive.

You should also keep in mind that any dependency (in this case the Pinia library) can bring problems similar to the "RIP Vuex" situation when the library dies, becomes obsolete, is no longer supported, or vulnerabilities are found in it. Composable features, on the other hand, look like a thorough innovation to the Vue framework.

How to split logic between component and composable functions?

It is convenient to think of it as MVC pattern, where the role of View (and partially Controller) is played by components, which are mainly responsible for visualization, and the logic and model (Model and partially Controller) fall on composable functions and their reactive state.

To understand what to put in a composable and what to put in a component (which may consist of several components), imagine that you change the component to another one - displaying your data in some other way. Ideally, the model (composite) should remain the same, you are only rewriting the component that has logic responsible for displaying it.

At the same time, the logic (Controller) can be shared between the component and the composable. For example, validation of form data can happen in the component (checking that the field is populated), in the component using a third-party utility (checking that the password is "complex"), and in the composable (checking that username is unique)

- + \ No newline at end of file diff --git a/en/development/testing.html b/en/development/testing.html index d11294dd8..1207ce8de 100644 --- a/en/development/testing.html +++ b/en/development/testing.html @@ -7,10 +7,10 @@ - + - + @@ -26,7 +26,7 @@
Skip to content

Testing

Do I need testing on the frontend?

There are several types of tests, among them are unit tests and integration (e2e) tests

Unit testing in Vue is done by Vitest, Jest.

You should be more careful with front-end testing, as writing and rewriting tests can often take time comparable to the development itself. At the same time, the usefulness of these tests will be highly questionable. Their expediency appears on large projects with a large number of developers. There unit tests also take time but reduce the probability that someone will mess something up. At the same time, unit tests are not the most necessary ingredient for quick MVP creation at a startup.

Frontend development in this aspect is very different from backend development, where unit tests are really useful.

Good article on this topic - Unit Test Fetish

What are e2e tests?

On the front end, especially for a web application that is already in production and needs to be updated from time to time, e2e tests are important.

e2e (end-to-end) testing is a software testing process that simulates real user actions at the interface level.

In this case, a browser will be launched (usually in headless mode - without UI), and it will use the scripts written to check the work of the site - the presence of elements on the page, the possibility of login, etc.

The main tools for e2e testing are Cypress, WebdriverIO.

In CI/CD projects, running tests is one of the main moments along with linting and build.

- + \ No newline at end of file diff --git a/en/frontend/about-frameworks.html b/en/frontend/about-frameworks.html index 42829c6b8..542284800 100644 --- a/en/frontend/about-frameworks.html +++ b/en/frontend/about-frameworks.html @@ -7,10 +7,10 @@ - + - + @@ -40,7 +40,7 @@ // Vue someArr.value.push(newItem.value);

Using ES6 native Proxy object avoids decomposition and creating an intermediate array. Also it should more performant.

- + \ No newline at end of file diff --git a/en/frontend/architecture.html b/en/frontend/architecture.html index fd7ee14bd..72417dd7c 100644 --- a/en/frontend/architecture.html +++ b/en/frontend/architecture.html @@ -7,10 +7,10 @@ - + - + @@ -26,7 +26,7 @@
Skip to content

Frontend application architecture

What is a good web application architecture

There are different theoretical definitions and justifications for this concept, but roughly speaking it is the following.

Let's say you are developing a project, already at the final stage. A customer comes to you and says something like: I want to add a shadow to all buttons, I want to change the UI library, we decided to support multiple languages, we decided to replace this module with another, we need to make more detailed adaptability for different resolutions, we decided to add themes, we are changing the provider of payment processing services, we have an increasing number of users / the site is slowing down / need to speed it up, need to increase the level of security of the site, we took a middle programmer, bring him up to speed quickly, and let him add functionality or fix the b

A good frontend application architecture allows you to accomplish all of this most efficiently with the least amount of effort.

OOP on the frontend

Many people coming from development in object-oriented languages try to use OOP concepts on the frontend and program with classes, inheritance, polymorphism and other things.

This is a mistake. The main computations on the front end are related to UI - displaying data, handling user interaction. Class systems and microservices are simply not needed on them. Of course, you can create a basic button, wrap it in two custom components and consider it inheritance, but you can't do it in code. That's why you have to learn to think in other categories - components, composable functions, js modules. And use your JavaScript power, not trying to stretch it on OOP.

At the same time, a good analogy of an object with a global ("static") and local ("object") state is a composable function. It can be used in certain situations.

Suitable architecture for Vue 3 web application

The most suitable architecture for a Vue 3 application is modular.

Initially, the application is divided into logical modules that are loosely related to each other. For example, for an online store, it can be a product catalog module, a module of a single product, a module of a personal cabinet / user account.

In addition, there is a shell module - what is sometimes called an app shell. A template with a header, footer, side menu and main window. It is wise to put utilities and resources used throughout the application into this module - for example, api, useI18n, BaseButtonandstringHelpers.

Each module has its own components, composables, assets, utils; perhaps api, routes, views, layouts.

Loose coupling allows each module to be developed fairly independently, which greatly increases the likelihood of project success.

Useful tips
Avoid addictions

If there is a possibility not to introduce a new dependency (not to plug in a new npm package) - don't do it. It may save you a bit of time, but a third-party library will sooner or later become obsolete, no longer supported, and may have a vulnerability. Besides, it increases the size of your bundle, which directly affects the performance of your application. Tree shaking is good in advertising, but it doesn't always work in reality.

If you need, for example, the debounce function, don't hurry to plug it together with some library. Google its implementation and copy 15 lines of code and make your own function.


Use wrappers over components of UI libraries and third-party utilities

If you use components of some UI library, don't use them directly - make wrappers for them. For example, BaseButton or BaseInput. This will make styling the components much easier, and will also make it much easier to switch to another library, or replace them with your own components.

The same goes for utilities.


Regular refactoring

Do code refactoring from time to time, moving components and modules to where they should logically be, renaming them, and structuring and improving the code itself. This is good for both the code and your professional growth.


Use CSS3

Try to use pure CSS3 for adaptability. Do not be tied to columnar models of CSS and UI libraries, unless it is a "done and forgotten, let the customer continue to suffer with it" project.

Spend a couple of days to learn Flexbox and you will be able to layout on it faster and better than on any Tailwind.


Use modern standards and language features

For example, HTML5 semantic elements - aside, header, section, article, details, etc.

CSS3 - Flexbox and Grid, Container query


Document the project

Draw use-case and other diagrams, describe the main functionality of the project and important details of its implementation - this will at least raise your level as a software developer.

VitePress is a very handy tool for technical documentation.

- + \ No newline at end of file diff --git a/en/frontend/css-ui-libs.html b/en/frontend/css-ui-libs.html index add328a75..e91658875 100644 --- a/en/frontend/css-ui-libs.html +++ b/en/frontend/css-ui-libs.html @@ -7,10 +7,10 @@ - + - + @@ -32,7 +32,7 @@ <template> <QButton ... /> </template>

and use BaseButton in your code. This way it will be much easier for you to upgrade, replace the library or replace this component with a self-designed one. And even just change the styles of the component.

Layout and adaptability of pages by means of CSS and UI libraries

Using the column system and other functionality of CSS and UI libraries like the popular Tailwind is convenient for small projects and sometimes speeds up layout, but very much worsens the quality of the code as a whole, including its maintainability and extensibility. It's as if the world went back to the days of IE6, when all styles and JavaScript were also located in tag attributes, and the whole evolution of CSS into a clear, convenient, beautiful hierarchical class model was for nothing, just like the division of the web into document (template), presentation layer (CSS styles) and logic (JavaScript).

The web is full of articles why an approach like Tailwind is a bad thing. We can only note that with proper skill, layout on pure CSS3 is also fast and much more convenient and pleasant in terms of DX than through CSS and UI libraries.

Quote

Good developers know the reasons why standards, patterns and good practices have become the way they are.

Bad developers stick to whatever new trend that might save them some learning curve.

- + \ No newline at end of file diff --git a/en/frontend/learning.html b/en/frontend/learning.html index 0c547a14a..5df5206d0 100644 --- a/en/frontend/learning.html +++ b/en/frontend/learning.html @@ -7,10 +7,10 @@ - + - + @@ -26,7 +26,7 @@
Skip to content

Learning Vue

Sources of information on Vue

For some reason, it is believed that there are only two ways to get knowledge on frontend - Vue documentation and tutorial videos from YouTube and all kinds of courses.

But documentation is not a textbook, but a reference book, and it is very difficult to separate grains from chaff on YouTube. I met some useful videos, but all of them were intended for developers who already know Vue quite well and showed some new or non-standard moments.


The main teacher should be a book that teaches, not a reference book.

An excellent Vue tutorial in English is the May 2023 Vue.js 3 Design Patterns and Best Practices. You can register on oReilly and read for 10 days for free. Even download it. In spite of the title, the book teaches programming, and from a fairly basic level.

Code examples from the book are in the public repository and well worth studying.

Vue 2 or Vue 3?

Vue 3.
Composition API.

If you need Vue 2 to support an existing project, you'll know the answer to that question yourself.

The difference between Vue 2 and Vue 3 is big. It's not a case of learning the previous version beforehand to better and more easily understand the next one.

Do I need to know JavaScript beforehand?

Absolutely, at least an intermediate level. If not, I would suggest taking a short javascript course first, so that the person knows about the document object, knows how to handle array methods and is not too afraid of promises. Also, HTML and CSS at least at a basic level.

Here is an easy to read book - "Morgan N. - JavaScript for Kids. A Programming Self-Tutorial - 2016. Before you start learning Vue, it is advisable to understand 70% of the first part as well as paragraphs 10 and 12.


tip

Also an absolutely necessary pre-skill is the ability to google.

Is there a certification for Vue?

Vue.js Certification

Vue Style Guide

Be sure to check out the Vue Style Guide and try to follow its best practices when writing code.

Go back to this source from time to time and improve your code.

ESlint also helps you keep your code in line with best practices.

Do I need a mentor?

A mentor is useful for both a beginner and an experienced developer. You can uselessly kill two days to solve a problem that can be explained in 20 minutes by a more experienced person. And this two-day "experience" will never be useful again.

In companies, this role is usually played by more competent and friendly colleagues.

There are services like Solvery on the Internet that can help in this matter.

I still want video

There are quality ones from Vue Mastery, but most are outdated.

What else to look at besides Vue? React?

You can do React if you have a real option to use that knowledge, but it's much better to expand your developer horizons. Try to write a simple API on the backend. The easiest and most convenient language for this is PHP, but you can also use Node.js or Python. Try JSON-RPC and WebSockets transport protocols. Upload your application to GitHub Pages or another similar service, experiment with GitHub Actions - they help a lot with deploy automation and CI/CD in general. Work with Cloud providers (many offer free resources), set up a virtual server. Register a domain, make a product finished site - even if it's just your resume site or something basic on VitePress (used by this site). Work with FireStore and open APIs for various data. Check out Swagger. Learn SQL, install MySQL and play around with it, or do it on SupaBase. Understanding how data is stored and processed on the backend will help a lot in choosing the right strategies on the frontend.

Study how the modern internet works and what technologies and best practices are prevalent on it now.

- + \ No newline at end of file diff --git a/en/frontend/spa-pwa-ssr-ssg.html b/en/frontend/spa-pwa-ssr-ssg.html index 0d1ea2075..b8234ef9b 100644 --- a/en/frontend/spa-pwa-ssr-ssg.html +++ b/en/frontend/spa-pwa-ssr-ssg.html @@ -7,10 +7,10 @@ - + - + @@ -26,7 +26,7 @@
Skip to content

SPA, PWA, SSG, SSR and SEO

Web 1.0 -> Web 2.0

First there was static HTML and browsers showed it. A little bit later a little bit of JavaScript was invented to process forms and do a little animation. Then CSS came along and everyone saw that it was beautiful. Then someone proposed the idea of JSON for data format, and then Microsoft gave the world XMLHttpRequest, and JavaScript was allowed to send and receive data from the server.

That's how SPA was born.

SPA

SPA (Single Page Application) works like a regular desktop/mobile application - when first accessing the server, it receives the shell necessary to display the site, and then sends data to/from the server, usually in JSON format. This is much more efficient than the way when with each request from the server came a new HTML page with all the resources.

For the user UX increases significantly.

spa-vs-mpa

PWA

PWA (Progressive Web Application) is another step to improve user experience and make web applications as close as possible to native web applications.

With PWA, two elements are added to the SPA:

  1. Manifest. A text file with the properties of the application. With this, the icon of the web application can be set as well as native applications to the home screen of the smartphone. In addition, when PWA is launched, it may not show browser elements and appear to be a normal application.

  2. Service worker. This is a layer in the browser between the server and the browser itself that allows you to do managed caching. In other words, store the app with all the resources on the smartphone/computer so that when you start it, it will run immediately. If you don't need data from the server, the app can run offline (e.g. Notes).

You can read more about PWA on the website created by the Chrome team - https://web.dev/

Upgrading SPA to PWA is very small in labor cost, but very significant in benefit. Developing SPA and not making it a PWA is like renting a luxury hotel room but sleeping on a mat at its entrance in the corridor because it's too lazy to walk to the bedroom.

PWA -> Workbox and vite-plugin-pwa

Manifest and Service worker are so simple that creating a wrapper over SW - Workbox, and a plugin for Vite - vite-plugin-pwa is not logical. You get several times more code, need to load additional dependencies and understand wrapper configurations. Simple things have been made complex.

It is better to use Manifest and Service worker as they were created originally, and write these two simple files using templates from the specifications.

SSG

SSG (Static Site Generation) is an approach where the content of a website is pre-generated into html files, which are then distributed from the server.

Immediately suitable for indexing by search engines.

SSR

SSR (Server Side Rendering), a way of generating html on the server side, when generation occurs at the moment of request. After the client requests a page, the server executes API requests on its side and then generates the html page. Accordingly, the server needs a Node.js server, which is quite a heavy load on the hardware.

In addition, there are a lot of restrictions when writing code and using certain JavaScript and Vue features. As Google writes regarding SSR - "A rehydration problem: one app for the price of two".

SEO optimization

In order for a search engine to index a page on your site, it must receive HTML with content (text, images, video) when accessing it. With SPA sites, where content is loaded dynamically by JavaScript, this is often not possible.

The most popular and inefficient method to bypass this is to use SSR (SSG is suitable for simple structured sites without backend, like documentation).

Google allows you to see how your site looks/indexed by its crawler, which somehow still works with scripts, so first check if you need to get complicated at all.

If you find problems, you can use dynamic rendering

dynamic-rendering

The point is to handle requests from normal users and search bots differently and give them different pages. For users - SPA, for search bots - pages generated on the fly or in advance. Distribution can be handled by a webserver or an entry point to your site (index.php instead of index.html).

The above picture implies some kind of Prerenderer (which are also available as a third-party service or their own solution), but in most cases it is much easier to generate HTML page for the bot directly.

That is, for example, for a product page in an online store it can be its text description with pictures and customer reviews in any HTML formatting. For this purpose it is enough a script on PHP/Express/Python, etc. in 100-200 lines, which is much less labor-intensive than SSR solutions, and also reduces the requirements in the server "hardware" by orders of magnitude (the output can be cached in a static HTML file).

When the actual content (text, images) of such a page coincides with the content of SPA in the browser, Google does not consider the simplified version for its bot as a deception. This method has been around since before the advent of SSRs. Verified by many years of use.

PageSpeed and other performance tests

PageSpeed and similar tools are very useful in identifying unoptimized places in your web application, but it is not quite right for SPA and PWA.

More precisely, some of its metrics don't take into account UX as a whole. A well-built PWA, when first downloaded and installed, will of course lose by FCP metrics to its SSR counterpart, but after placing all its resources locally on the client's browser, no SSR will come close to it in terms of speed and user comfort, not to mention other features like offline operation and installation as a native application.

SSR can probably be useful for some exceptional cases, but in general it looks like a dead-end branch in frontend development.

- + \ No newline at end of file diff --git a/en/index.html b/en/index.html index 00ed44003..10eca20b8 100644 --- a/en/index.html +++ b/en/index.html @@ -7,10 +7,10 @@ - + - + @@ -26,7 +26,7 @@
Skip to content

Vue FAQ

Vue JavaScript framework FAQ

Most frequently asked questions about Vue.js

Vue FAQ
- + \ No newline at end of file diff --git a/en/misc/CHANGELOG.html b/en/misc/CHANGELOG.html index 0209e33c6..46a726beb 100644 --- a/en/misc/CHANGELOG.html +++ b/en/misc/CHANGELOG.html @@ -7,10 +7,10 @@ - + - + @@ -26,7 +26,7 @@
Skip to content

Changelog


v1.3 (10-10-2023)

Changed

  • Backend / CORS
  • Frontend / How to learn Vue?


v1.2 (28-09-2023)

New

  • Deployment / Github Actions

Changed

  • Deployment / CI/CD
  • Deployment / Stores - Vuex, Pinia and Composition API
  • Frontend / About frontend frameworks


v1.1 (15-09-2023)

New

  • Development / Stores

Changed

  • Development / Helpful hints.


v1.0 (11-09-2023)

New

  • Initial launch
- + \ No newline at end of file diff --git a/en/misc/cheat-sheets.html b/en/misc/cheat-sheets.html index fb8cc8a21..e087b39c6 100644 --- a/en/misc/cheat-sheets.html +++ b/en/misc/cheat-sheets.html @@ -7,10 +7,10 @@ - + - + @@ -26,7 +26,7 @@ - + \ No newline at end of file diff --git a/en/misc/contribute.html b/en/misc/contribute.html index 281a67822..4af3b7f28 100644 --- a/en/misc/contribute.html +++ b/en/misc/contribute.html @@ -7,10 +7,10 @@ - + - + @@ -26,7 +26,7 @@
Skip to content

Contribute to the development of this FAQ

You can suggest corrections to any or add a new Q/A using the form below.

GitHub way of making changes (fork -> edit -> create PR) is also very welcome.

- + \ No newline at end of file diff --git a/en/misc/glossary.html b/en/misc/glossary.html index 0200d267c..ad25a9de3 100644 --- a/en/misc/glossary.html +++ b/en/misc/glossary.html @@ -7,10 +7,10 @@ - + - + @@ -26,7 +26,7 @@
Skip to content

Glossary and abbreviations

  • DX (developer experience) - developer's experience, the convenience of working on the application. This includes everything - code quality, IDE usability, competent project architecture, commenting, documentation quality, using proven and best practices on the project, etc.
  • UX (user experience) - user's experience. Its general impression of the user's convenience in working with the site/application.
  • UI (user interface) - website/application design from the point of view of visual aesthetics and style.
  • SW (service worker) - Service Worker (PWA element)
  • AT (access token) - JWT authentication token
  • RT (refresh token) - JWT authentication token
- + \ No newline at end of file diff --git a/en/misc/introduction.html b/en/misc/introduction.html index 2cfc563e3..849617f01 100644 --- a/en/misc/introduction.html +++ b/en/misc/introduction.html @@ -7,10 +7,10 @@ - + - + @@ -26,7 +26,7 @@
Skip to content

Introduction

This FAQ (Frequently Asked Questions) is created on the most frequently touched topics in Reddit r/vuejs/ and Telegram chat @vuejs_ru.

The level of questions and answers covers both beginners and experienced frontend developers.

As answers are used both generally recognized, verified and objective information, and subjective opinion of the author.

The increase in complexity does not come from the top down. The first questions and answers describe non-obvious points that may be interesting for experienced programmers.

The main sources of information - official documentation of Vue 3 and Vite, r/vuejs/, @vuejs_ru.

Relevance of the information - 2022-2023 years.


About the author:

Ruslan Makarov - independent consultant, full-stack engineer with 20+ years of experience in SD, AWS Certified Solutions Architect, Sun Certified Java Developer.

- + \ No newline at end of file diff --git a/en/test.html b/en/test.html index 7199120b2..d4a711dad 100644 --- a/en/test.html +++ b/en/test.html @@ -7,10 +7,10 @@ - + - + @@ -26,7 +26,7 @@
Skip to content

Vue FAQ

Vue JavaScript framework FAQ

Most frequently asked questions about Vue.js

Vue FAQ
- + \ No newline at end of file diff --git a/frontend/about-frameworks.html b/frontend/about-frameworks.html index 6df3ccbae..20bbbc4cc 100644 --- a/frontend/about-frameworks.html +++ b/frontend/about-frameworks.html @@ -7,10 +7,10 @@ - + - + @@ -41,7 +41,7 @@ // Vue someArr.value.push(newItem.value);

Использование нативного ES6 объекта Proxy позволяет избежать декомпозиции и создания промежуточного массива. Также это более производительное решение.

- + \ No newline at end of file diff --git a/frontend/architecture.html b/frontend/architecture.html index fd03c7ef0..cd8127c69 100644 --- a/frontend/architecture.html +++ b/frontend/architecture.html @@ -7,10 +7,10 @@ - + - + @@ -27,7 +27,7 @@
Skip to content

Архитектура фронтэнд приложений

Что такое хорошая архитектура веб-приложения

Есть разные теоретические определения и обоснования данного понятия, но грубо говоря это следующее.

Допустим ты разрабатываешь проект, уже на финальном этапе. К тебе подходит заказчик и говорит что-то типа: я хочу добавить тень ко всем кнопкам, я хочу изменить UI библиотеку, мы решили поддерживать несколько языков, мы решили заменить вот этот модуль на другой, нужно сделать более детальную адаптивность для разных разрешений, мы решили добавить темы, мы меняем провайдера услуг по обработке платежей, у нас повышается число пользователей / сайт тормозит / надо его ускорить, надо повысить уровень безопасности сайта, мы взяли мидл программиста, введи его в курс дела быстро, и пусть он добавляет функционал или фиксит баги и т.п.

Хорошая архитектура фронтенд приложения позволяет выполнить всё это наиболее эффективно с наименьшими затратами.

ООП на фронтенде

Многие приходя из разработки на объектно-ориентированных языках пытаются использовать концепции ООП и на фронте и программировать с классами, наследованием, полиморфизмом и прочим.

Это ошибка. Основные вычисления на фронте связаны с UI - показ данных, обработка взаимодействия с пользователем. Системы классов и микросервисов на них просто не нужны. Конечно, можно создать базовую кнопку, обернуть ее в два кастомных компонента и считать это наследованием, но в коде этого не получается. Поэтому надо учиться мыслить другими категориями - компоненты, композаблы, js модули. И использовать свою мощь JavaScript-a, а не пытаться натянуть его на ООП.

В то же время неплохой аналогией объекта с глобальным ("статичным") и локальным ("объектным") состоянием является композабл функция. Это можно использовать в определённых ситуациях.

Подходящая архитектура для Vue 3 веб-приложения

Самая удобная архитектура для Vue 3 приложения - модульная.

Изначально, приложение разбивается на логические модули, слабо связанные друг с другом. Например, для онлайн магазина это могут быть модуль каталога товаров, модуль отдельного товара, модуль личного кабинета / аккаунта пользователя.

Кроме того, есть модуль оболочки - то, что иногда называет app shell. Шаблон с хедером, футером, боковым меню и главным окном. В этот модуль целесообразно поместить утилиты и ресурсы, используемые по всему приложению - например, api, useI18n, BaseButton и stringHelpers.

В каждом модуле свои components, composables, assets, utils; возможно, api, routes, views, layouts.

Слабая связанность позволяет разрабатывать каждый модуль достаточно независимо, что значительно повышает вероятность успешности проекта.

Полезные советы
Избегайте зависимостей

Если есть возможность не вводить новую зависимость (не подключать новый npm пакет) - не делайте это. Это может немного сэкономит ваше время, но сторонняя библиотека рано или поздно устареет, перестанет поддерживаться, в ней могут обнаружить уязвимость. Кроме того она увеличивает размер вашего бандла, что напрямую влияет на производительность вашего приложения. Tree shaking хорош в рекламных зазываниях, но работает реально далеко не всегда.

Если вам нужна, например, функция debounce, не торопитесь подключать её вместе с какой-либо библиотекой. Загуглите её реализацию и скопируйте 15 строк кода, сделав свою функцию.


Используйте обертки над компонентами UI библиотек и сторонних утилит

Если вы используете компоненты какой-то UI библиотеки, не используйте их напрямую - сделайте обертки для них. Например, BaseButton или BaseInput. Это намного облегчит стилизацию компонент, а также сильно упростит переход на другую библиотеку, или замену на свои компоненты.

То же самое с утилитами.


Регулярный рефакторинг

Время от времени делайте рефакторинг кода, перемещая компоненты и модули туда, где они должны быть логически, переименовывая их, и структурируя и улучшая сам код. Это полезно и для кода, и для вашего профессионального роста.


Используйте CSS3

Старайтесь использовать для адаптивноcти чистый CSS3. Не привязывайтесь к колоночным моделям CSS и UI библиотек, если только это не проект из разряда: "сделал и забыл, пусть заказчик дальше с ним мучается".

Потратьте пару дней на изучение Флексбокса и вы сможете верстать на нём быстрей и лучше, чем на любом Тайлвинде.


Используйте современные стандарты и возможности языков

Например, семантические элементы HTML5 - aside, header, section, article, details и.т.д.

CSS3 - Flexbox и Grid, Container query


Документируйте проект

Рисуйте use-case и другие диаграммы, описывайте основной функционал проекта и важные детали его реализации - это как минимум повысит ваш уровень как разработчика ПО.

VitePress - очень удобный инструмент для технического документирования.

- + \ No newline at end of file diff --git a/frontend/css-ui-libs.html b/frontend/css-ui-libs.html index b5eaa9cf4..2d0bc0ca1 100644 --- a/frontend/css-ui-libs.html +++ b/frontend/css-ui-libs.html @@ -7,10 +7,10 @@ - + - + @@ -33,7 +33,7 @@ <template> <QButton ... /> </template>

и используйте в своем коде BaseButton. Таким образом в дальнейшем вам будет намного проще проапгрейдиться, заменить библиотеку или заменить данный компонент на самописный. И даже просто изменить у компонента стили.

Лэйаут и адаптивность страниц средствами CSS и UI библиотек

Использование колоночной системы и иного функционала CSS и UI библиотек типа распространенного Tailwind удобно для небольших проектов и иногда ускоряет верстку, однако очень сильно ухудшает качество кода в целом, включая его поддерживаемость и расширяемость. Как будто мир вновь вернулся во времена IE6, когда все стили и JavaScript также располагались в аттрибутах тэгов, и вся эволюция CSS в понятную, удобную, красивую иерарxичную модель классов была зря, как и разделение веба на документ (шаблон), презентационный слой (CSS стили) и логику (JavaScript).

В интернете полно статей, почему подход подобный Tailwind это плохо. Можно отметить только, что при должном умении верстать на чистом CSS3 также быстро и намного удобней и приятней в плане DX, чем через средства CSS и UI библиотек.

Цитата

Хорошие разработчики знают причины, по которым стандарты, паттерны и хорошие практики стали таковыми.

Плохие разработчики придерживаются любой новой тенденции, которая может сэкономить им немного времени на обучение.

- + \ No newline at end of file diff --git a/frontend/learning.html b/frontend/learning.html index 2e4fd1496..df15c798c 100644 --- a/frontend/learning.html +++ b/frontend/learning.html @@ -7,10 +7,10 @@ - + - + @@ -27,7 +27,7 @@
Skip to content

Изучение Vue

Источники информации по Vue

Почему-то считается, что на фронтенде есть всего два варианта получать знания - документация Vue и обучающие видео с Ютюба и всевозможных курсов.

Но документация это не учебник, а справочник, и отделить зерна от плевел на Ютюбе очень сложно. Я встречал полезные видео, но все они предназначались для уже неплохо знающих Vue разработчиков, и показывали какие-то новые или нестандартные моменты.


Главным учителем должна быть книга, которая именно учит, а не даёт справочную информацию.

Прекрасный учебник по Vue на английском языке - вышедшая в мае 2023 года Vue.js 3 Design Patterns and Best Practices. Можно зарегистрироваться на oReilly и читать 10 дней бесплатно. Даже скачать. Несмотря на название, книга учит именно программированию, причем, довольно с таки начального уровня.

Примеры из книги находятся в открытом доступе и вполне достойны изучения.

На русском, к сожалению, почти ничего нет, но, во-первых, есть Google translate, а во-вторых, стать уверенным разработчиком без хотя бы среднего знания технического английского вряд ли получится.

Так же надо отметить, что документация Vue на русском порой сильно отстает от документации на английском.

Vue 2 или Vue 3?

Vue 3.
Composition API.

Если вам нужен будет Vue 2 для поддержки существующего проекта, то вы сами будете знать ответ на этот вопрос.

Разница между Vue 2 и Vue 3 большая. Это не тот случай, когда надо выучить предварительно предыдущую версию, чтобы лучше и легче понять следующую.

Нужно ли знать JavaScript предварительно?

Обязательно, минимум на среднем уровне. Если этого нет, я бы предложил сперва пройти короткий курс javascript-a, чтобы человек знал об объекте document, умел обращаться с методами массива и не очень боялся промисов. Также, HTML и CSS как минимум на базовом уровне.

Вот легко читаемая книжка - "Морган Н. - JavaScript для детей. Самоучитель по программированию - 2016. Перед началом изучения Vue желательно понимать 70% первой части, а также параграфы 10 и 12.

Также классический ресурс по JavaScript - learn.javascript.ru

70 вопросов по JavaScript для подготовки к собеседованию - отличный тест, проверить себя по знанию языка.


Совет

Также абсолютно необходимый предварительный скилл - умение гуглить.

Есть ли сертификация по Vue?

Vue.js Certification

Vue Style Guide

Обязательно ознакомьтесь с Vue Style Guide и старайтесь придерживаться его лучших практик при написании кода.

Время от времени возвращайтесь к этому источнику и улучшайте свой код.

ESlint также помогает держать свой код в соответствии с лучшими практиками.

Нужен ли ментор?

Ментор полезен и начинающему, и опытному разработчику. Можно бесполезно убить два дня на решение проблемы, которую за 20 минут может объяснить более опытный человек. Причем, этот двухдневный "опыт" больше никогда не пригодится.

В компаниях эту роль обычно выполняют более компетентные доброжелательные коллеги.

В интернете есть сервисы типа Solvery, которые могут помочь в этом вопросе.

Всё равно хочу видео

Есть качественные у Vue Mastery, однако большинство устарели.

Что еще посмотреть кроме Vue? React?

Можно и React, если есть реальный вариант использования этих знаний, однако намного лучше расширить свой кругозор разработчика. Попробуйте написать простой API на бэкенде. Самый легкий и удобный язык для этого - PHP, но можно и на Node.js или Python. Попробуйте транспортные протоколы JSON-RPC и WebSockets. Захостите свое приложение на GitHub Pages или другой аналогичный сервис, поэкспериментируйте с GitHub Actions - они очень помогают с автоматизацией деплоя и CI/CD в целом. Поработайте с Cloud провайдерами (многие предлагают бесплатные ресурсы), настройте виртуальный сервер. Зарегистрируйте домен, сделайте продуктовый законченный сайт - даже если это будет просто ваш сайт-резюме или что-то элементарное на VitePress (используется данным сайтом). Поработайте с FireStore и открытыми API для различных данных. Посмотрите Swagger. Поизучайте SQL, установите MySQL и поиграйте с ним, либо сделайте это на SupaBase. Понимание, как данные хранятся и обрабатываются на бэкенде, сильно поможет в выборе правильных стратегий на фронте.

Изучайте, как работает современный Интернет, и какие технологии и лучшие практики распространены в нем сейчас.

- + \ No newline at end of file diff --git a/frontend/spa-pwa-ssr-ssg.html b/frontend/spa-pwa-ssr-ssg.html index ca0f9065f..c455ad74d 100644 --- a/frontend/spa-pwa-ssr-ssg.html +++ b/frontend/spa-pwa-ssr-ssg.html @@ -7,10 +7,10 @@ - + - + @@ -27,7 +27,7 @@
Skip to content

SPA, PWA, SSG, SSR и SEO

Web 1.0 -> Web 2.0

Сперва был статичный HTML и браузеры показывали его. Чуть позже придумали немножко JavaScript-а, чтобы обрабатывать формочки и делать небольшую анимацию. Потом появился CSS, и все увидели, что это красиво. После кто-то предложил идею JSON для формата данных, а затем Микрософт подарила миру XMLHttpRequest, и JavaScript-у разрешили отправлять и получать данные с сервера.

Так родился SPA.

SPA

SPA (Single Page Application) работает примерно как обычное десктоп/мобильное приложение - при первом обращении на сервер получает програмную оболочку, необходимую для отображения сайта, а затем уже пересылает на/с сервера данные, обычно в JSON формате. Так получается намного эффективней способа, когда с каждым запросом с сервера приходила новая HTML страница с всеми ресурсами.

Для пользователя UX повышается значительно.

spa-vs-mpa

PWA

PWA (Progressive Web Application) - еще один шаг, чтобы улучшить пользовательский опыт и максимально приблизить веб приложения по ощущениям пользователя к нативным.

При PWA к SPA добавляются два элемента:

  1. Манифест. Текстовый файл со свойствами приложения. Благодаря ему иконка веб-приложения может быть установлена также как и у нативных приложений на домашний экран смартфона. Кроме того, при запуске PWA может не показывать элементы браузера и казаться обычным приложением.

  2. Service worker. Это прослойка в браузере между сервером и самим браузером, которая позволяет сделать управляемое кэширование. Другими словами, сохранить приложение со всеми ресурсами на смартфоне/компьютере, чтобы при запуске оно сразу запускалось. Если не нужны данные с сервера, то приложение может работать оффлайн (например, Заметки).

Больше о PWA можно прочесть на сайте, созданном командой Chrome - https://web.dev/

Апгрейд SPA до PWA очень небольшой по трудозатратам, но очень значительный по выгоде. Разрабатывать SPA и не делать его PWA - это как снять люксовый номер в гостинице, но лечь спать на его входе в коридоре на коврике, потому что до спальни лень дойти.

PWA -> Workbox и vite-plugin-pwa

Манифест и Service worker настолько просты, что создание обертки над SW - Workbox, и плагина для Vite vite-plugin-pwa логическому объяснению не поддается. Кода получается в несколько раз больше, нужно грузить дополнительные зависимости и разбираться в конфигурациях оберток. Простое сделали сложным.

Лучше задействовать Манифест и Service worker как они созданы изначально, и написать два этих простых файла по шаблонам из спецификаций.

SSG

SSG (Static Site Generation) — подход, когда содержимое сайта предварительно генерируется в html-файлы, которые потом раздаются с сервера.

Сразу подходит для индексации поисковиками.

SSR

SSR (Server Side Rendering), способ генерации html на стороне сервера, когда генерация происходит в момент обращения. После запроса клиентом странички, сервер на своей стороне выполняет API-запросы, а затем формирует html-страницу. Соответственно, на сервере нужен Node.js сервер, который довольно сильно нагружает "железо".

Кроме того, есть множество ограничений при написании кода и использования тех или иных JavaScript и Vue возможностей. Как пишет Google относительно SSR - "A rehydration problem: one app for the price of two".

SEO оптимизация

Для того, чтобы поисковик мог проиндексировать страницу вашего сайта, при обращении к ней он должен получить HTML с контентом (текст, картинки, видео). Со SPA сайтами, в которых контент подгружается динамически JavaScript-ом, такое часто не получается.

Самым популярным и неэффективным методом для обхода этого является использование SSR (SSG подходит для несложных по структуре сайтов без бэкенда, вроде документаций).

Google позволяет посмотреть, как ваш сайт выглядит/индексируется его кроулером, который как-то всё-таки работает со скриптами, поэтому для начала проверьте, нужно ли вам усложняться вообще.

Если проблемы обнаружились, то можно воспользоваться динамической отрисовкой

dynamic-rendering

Смысл в том, чтобы обрабатывать запросы обычных пользователей и поисковых ботов по-разному и отдавать им разные страницы. Для пользователей - SPA, для поисковиков - сгенеренные налету либо заранее страницы. Распределение может вести вебсервер или точка входа на ваш сайт (index.php вместо index.html).

На картинке выше подразумевается некий Prerenderer (которые тоже есть в качестве стороннего сервиса или своего решения), однако в большинстве случаев намного проще генерить HTML страницу для бота напрямую.

То есть, например, для страницы товара в онлайн магазине это может быть его текстовое описание с картинками и отзывами покупателей в любом HTML форматировании. Для этого достаточно скрипта на PHP/Express/Python и т.д. в 100-200 строк, что намного менее трудозатратней SSR решений, а так же снижает требования в серверному "железу" на порядки (вывод можно закэшировать в статичный HTML файл).

При совпадении фактического контента (текст, картинки) такой страницы с контентом SPA в браузере, Google не рассматривает упрощенную для его бота версию как обман. Данная метода была еще до появления всяких SSR. Проверено многолетним использованием.

PageSpeed и другие тесты производительности

PageSpeed и подобные инструменты очень полезны в выявлении неоптимизированных мест в вашем веб-приложении, однако для SPA и PWA он не совсем верен.

Точней, некоторые его метрики не учитывают UX в целом. Нормально сделанный PWA при самой первой загрузке и установке, конечно, проиграет по FCP метрике аналогу на SSR, но после размещения всех своих ресурсов локально на браузере клиента, никакой SSR и близко не сравнится с ним по скорости работы и комфорту для пользователя, не говоря уже о прочих возможностях типа оффлайн работы и установке как нативного приложения.

SSR может быть, наверное, полезен для каких-то исключительных случаев, но в целом он выглядит тупиковой ветвью во фронтенд разработке.

- + \ No newline at end of file diff --git a/hashmap.json b/hashmap.json index 1d5772a4d..85c834fe3 100644 --- a/hashmap.json +++ b/hashmap.json @@ -1 +1 @@ -{"backend_cors.md":"e41540f2","en_backend_backend.md":"3daab805","en_backend_cors.md":"52784d51","en_development_misc.md":"4421ea66","backend_auth.md":"e24d02e6","backend_api.md":"0d5fd0ff","backend_protocols.md":"0cc4b484","backend_backend.md":"cd4af13a","deployment_ci-cd.md":"c378a97e","deployment_docker.md":"e7a454f2","development_libraries.md":"fd9dc5c7","development_misc.md":"3d167aa1","development_stores.md":"81c5e707","development_testing.md":"d1a478a4","en_backend_api.md":"9805d7f4","en_backend_protocols.md":"67330a25","en_deployment_ci-cd.md":"f2ccafcb","en_deployment_docker.md":"d9782a92","en_deployment_github-actions.md":"5b187627","en_deployment_hosting.md":"d7312fec","en_development_assets.md":"7778ce8a","en_development_building.md":"815b5ec2","development_building.md":"655c7971","deployment_github-actions.md":"2ac572ba","book_ru_chapter 1_ the vue 3 framework.md":"e8ce3045","development_ide.md":"e6b23d9d","deployment_hosting.md":"a5a8414c","book_ru_not-implemented.md":"47aa48a7","en_development_ide.md":"2d80d217","en_development_libraries.md":"b61a8ff0","en_development_stores.md":"07e18e88","en_development_testing.md":"d1eef49f","en_frontend_about-frameworks.md":"79abd1ac","en_frontend_architecture.md":"05962237","en_frontend_css-ui-libs.md":"5a7d873f","development_assets.md":"1a26ad88","en_frontend_learning.md":"54c422a7","en_frontend_spa-pwa-ssr-ssg.md":"605cd8f8","en_index.md":"694fb854","en_misc_changelog.md":"8e99c206","en_misc_cheat-sheets.md":"2f7e08aa","en_misc_contribute.md":"4d8993c9","en_misc_introduction.md":"36fab7ae","en_test.md":"00111351","frontend_about-frameworks.md":"83a19cb6","frontend_architecture.md":"7504ae95","frontend_css-ui-libs.md":"8de6f828","frontend_learning.md":"9eed980a","frontend_spa-pwa-ssr-ssg.md":"dceac47b","index.md":"4594568c","misc_changelog.md":"34856e29","misc_cheat-sheets.md":"c82a4fc8","misc_contribute.md":"a56224e5","misc_glossary.md":"efe359e4","misc_introduction.md":"9589e94b","book_ru_index.md":"99eee03a","en_backend_auth.md":"19bc5e2b","en_misc_glossary.md":"92f1b346"} +{"backend_api.md":"0d5fd0ff","backend_protocols.md":"0cc4b484","backend_backend.md":"cd4af13a","backend_cors.md":"e41540f2","backend_auth.md":"e24d02e6","development_building.md":"655c7971","book_ru_not-implemented.md":"47aa48a7","deployment_docker.md":"e7a454f2","deployment_hosting.md":"a5a8414c","development_assets.md":"1a26ad88","en_index.md":"694fb854","en_misc_changelog.md":"8e99c206","en_misc_cheat-sheets.md":"2f7e08aa","en_misc_contribute.md":"4d8993c9","en_misc_glossary.md":"92f1b346","en_misc_introduction.md":"36fab7ae","en_test.md":"00111351","frontend_about-frameworks.md":"83a19cb6","frontend_architecture.md":"7504ae95","frontend_css-ui-libs.md":"8de6f828","frontend_learning.md":"9eed980a","index.md":"4594568c","misc_changelog.md":"34856e29","deployment_ci-cd.md":"c378a97e","deployment_github-actions.md":"2ac572ba","misc_glossary.md":"efe359e4","misc_introduction.md":"9589e94b","book_ru_index.md":"99eee03a","development_libraries.md":"fd9dc5c7","development_stores.md":"81c5e707","development_testing.md":"d1a478a4","development_ide.md":"e6b23d9d","en_backend_auth.md":"19bc5e2b","en_backend_backend.md":"3daab805","en_backend_cors.md":"52784d51","en_backend_protocols.md":"67330a25","en_deployment_ci-cd.md":"f2ccafcb","en_deployment_docker.md":"d9782a92","en_development_assets.md":"7778ce8a","en_development_building.md":"815b5ec2","en_backend_api.md":"9805d7f4","frontend_spa-pwa-ssr-ssg.md":"dceac47b","en_development_ide.md":"2d80d217","en_development_libraries.md":"b61a8ff0","en_development_misc.md":"4421ea66","en_frontend_learning.md":"54c422a7","en_development_stores.md":"07e18e88","en_development_testing.md":"d1eef49f","en_frontend_about-frameworks.md":"79abd1ac","en_frontend_architecture.md":"05962237","en_frontend_css-ui-libs.md":"5a7d873f","development_misc.md":"3d167aa1","misc_cheat-sheets.md":"c82a4fc8","book_ru_chapter 1_ the vue 3 framework.md":"0b158311","en_deployment_github-actions.md":"5b187627","en_deployment_hosting.md":"d7312fec","misc_contribute.md":"a56224e5","en_frontend_spa-pwa-ssr-ssg.md":"605cd8f8"} diff --git a/index.html b/index.html index 74624dacc..33407948a 100644 --- a/index.html +++ b/index.html @@ -7,10 +7,10 @@ - + - + @@ -27,7 +27,7 @@
Skip to content

Vue FAQ

Vue JavaScript framework FAQ

Наиболее часто задаваемые вопросы по Vue.js

Vue FAQ
- + \ No newline at end of file diff --git a/misc/CHANGELOG.html b/misc/CHANGELOG.html index 352bfe3d7..6b90c36bd 100644 --- a/misc/CHANGELOG.html +++ b/misc/CHANGELOG.html @@ -7,10 +7,10 @@ - + - + @@ -27,7 +27,7 @@
Skip to content

История изменений


v1.3 (10-10-2023)

Изменено

  • Общение с бэкендом / CORS
  • Фронтенд / Как изучать Vue?


v1.2 (27-09-2023)

Новое

  • Деплой на сервере / Github Actions

Изменено

  • Деплой на сервере / CI/CD
  • Разработка / Сторы - Vuex, Pinia и Composition API
  • Фронтенд / О фронтенд фреймворках
  • Несущественные изменения и исправление ошибок в разных разделах


v1.1 (15-09-2023)

Новое

  • Разработка / Сторы

Изменено

  • Разработка / Полезные советы


v1.0 (11-09-2023)

Новое

  • Начальный запуск
- + \ No newline at end of file diff --git a/misc/cheat-sheets.html b/misc/cheat-sheets.html index 985ce55e3..eed704743 100644 --- a/misc/cheat-sheets.html +++ b/misc/cheat-sheets.html @@ -7,10 +7,10 @@ - + - + @@ -27,7 +27,7 @@
Skip to content
- + \ No newline at end of file diff --git a/misc/contribute.html b/misc/contribute.html index 27a6439ff..f95b27588 100644 --- a/misc/contribute.html +++ b/misc/contribute.html @@ -7,10 +7,10 @@ - + - + @@ -27,7 +27,7 @@
Skip to content

Внесите лепту в развитие данного FAQ

Вы можете предложить корректировку любого или добавление нового вопроса-ответа используя форму ниже.

GitHub way внесения изменений (fork -> edit -> create PR) также всячески приветствуется.

- + \ No newline at end of file diff --git a/misc/glossary.html b/misc/glossary.html index dbfaec6b8..44bd90db3 100644 --- a/misc/glossary.html +++ b/misc/glossary.html @@ -7,10 +7,10 @@ - + - + @@ -27,7 +27,7 @@
Skip to content

Глоссарий и сокращения

  • DX (developer experience) - опыт разработчика, удобство его работы над приложением. Сюда входит всё - качество кода, удобство работы с IDE, грамотная архитектура проекта, комментирование, качество документации, использование на проекте проверенных и лучших практик и т.п.
  • UX (user experience) - опыт пользователя. Общее его впечатление от удобства работы с сайтом/приложением.
  • UI (user interface) - дизайн вебсайта/приложения с точки зрения визуальной эстетики и стиля
  • SW (service worker) - сервис воркер (элемент PWA)
  • AT (access token) - токен при JWT аутентификации
  • RT (refresh token) - токен при JWT аутентификации
- + \ No newline at end of file diff --git a/misc/introduction.html b/misc/introduction.html index 00369ede5..42830382e 100644 --- a/misc/introduction.html +++ b/misc/introduction.html @@ -7,10 +7,10 @@ - + - + @@ -27,7 +27,7 @@
Skip to content

Предисловие

Данный FAQ (Frequently Asked Questions - Часто задаваемые вопросы) создан по наиболее часто затрагиваемым темам в Reddit r/vuejs/ и Телеграм чате @vuejs_ru

Уровень вопросов и ответов охватывает как начинающих так и опытных фронтэнд разработчиков.

В качестве ответов используется как общепризнанная, проверенная и объективная информация, так и субъективное мнение составителя.

Повышение сложности не идет сверху вниз. И в первых вопросах-ответах описываются неочевидные моменты, могущие быть интересными для опытных программистов.

Основные источники информации - официальная документация Vue 3 и Vite, r/vuejs/, @vuejs_ru

Актуальность информации - 2022-2023 года.

- + \ No newline at end of file