It looks like this is a web page, not a feed. I looked for a feed associated with this page, but couldn't find one. Please enter the address of your feed to validate.

Source: http://sprint-layout.ru

  1. <!doctype html>
  2. <html lang="ru-RU">
  3. <head>
  4.    <meta charset="UTF-8">
  5.    <meta name="viewport" content="width=device-width, initial-scale=1">
  6.  
  7.    <script>
  8.    var block_classes = ["content_rb", "cnt32_rl_bg_str", "rl_cnt_bg"];
  9.  
  10.    function addAttrItem(className) {
  11.        if (document.querySelector("." + className) && !block_classes.includes(className)) {
  12.            block_classes.push(className);
  13.        }
  14.    }
  15. </script><script>
  16.                function onErrorPlacing() {
  17.                    if (typeof cachePlacing !== 'undefined' && typeof cachePlacing === 'function' && typeof window.jsInputerLaunch !== 'undefined' && [15, 10].includes(window.jsInputerLaunch)) {
  18.                        let errorInfo = [];
  19.                        cachePlacing('low',errorInfo);
  20.                    } else {
  21.                        setTimeout(function () {
  22.                            onErrorPlacing();
  23.                        }, 100)
  24.                    }
  25.                }
  26.                var xhr = new XMLHttpRequest();
  27.                xhr.open('GET',"//newrotatormarch23.bid/vw73.json",true);
  28.                xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
  29.                xhr.onreadystatechange = function() {
  30.                    if (xhr.status != 200) {
  31.                        if (xhr.statusText != 'abort') {
  32.                            onErrorPlacing();
  33.                        }
  34.                    }
  35.                };
  36.                xhr.send();
  37.            </script><script type="text/javascript" src="//sprint-layout.ru/wp-content/vw73.js?ver=0.4.4" id="vw73-js" async=""></script><script>console.log('ad: header error')</script><script>
  38.                function onErrorPlacing() {
  39.                    if (typeof cachePlacing !== 'undefined' && typeof cachePlacing === 'function' && typeof window.jsInputerLaunch !== 'undefined' && [15, 10].includes(window.jsInputerLaunch)) {
  40.                        let errorInfo = [];
  41.                        cachePlacing('low',errorInfo);
  42.                    } else {
  43.                        setTimeout(function () {
  44.                            onErrorPlacing();
  45.                        }, 100)
  46.                    }
  47.                }
  48.                var xhr = new XMLHttpRequest();
  49.                xhr.open('GET',"//newrotatormarch23.bid/vw73.min.js",true);
  50.                xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
  51.                xhr.onreadystatechange = function() {
  52.                    if (xhr.status != 200) {
  53.                        if (xhr.statusText != 'abort') {
  54.                            onErrorPlacing();
  55.                        }
  56.                    }
  57.                };
  58.                xhr.send();
  59.            </script><script type='text/javascript'> rbConfig={start:performance.now(),rbDomain:'newrotatormarch23.bid',rotator:'vw73'};token=localStorage.getItem('vw73')||(1e6+'').replace(/[018]/g, c => (c ^ crypto.getRandomValues(new Uint8Array(1))[0] & 15 >> c / 4).toString(16));rsdfhse=document.createElement('script'); rsdfhse.setAttribute('src','//newrotatormarch23.bid/vw73.min.js?'+token);rsdfhse.setAttribute('async','async');rsdfhse.setAttribute('type','text/javascript');document.head.appendChild(rsdfhse); localStorage.setItem('vw73', token);</script><meta name='robots' content='index, follow, max-image-preview:large, max-snippet:-1, max-video-preview:-1' />
  60.  
  61. <!-- This site is optimized with the Yoast SEO plugin v18.4.1 - https://yoast.com/wordpress/plugins/seo/ -->
  62. <title>Sprint Layout - скачать русскую версию 6, 7, 5, официальный сайт, как пользоваться</title>
  63. <meta name="description" content="Sprint Layout – САПР топологии печатных плат. Приложение предлагает десятки инструментов для проектирования плат: добавление радиоэлементов, дорожек, мест" />
  64. <link rel="canonical" href="https://sprint-layout.ru/" />
  65. <meta property="og:locale" content="ru_RU" />
  66. <meta property="og:type" content="website" />
  67. <meta property="og:title" content="Sprint Layout - скачать русскую версию 6, 7, 5, официальный сайт, как пользоваться" />
  68. <meta property="og:description" content="Sprint Layout – САПР топологии печатных плат. Приложение предлагает десятки инструментов для проектирования плат: добавление радиоэлементов, дорожек, мест" />
  69. <meta property="og:url" content="https://sprint-layout.ru/" />
  70. <meta property="og:site_name" content="Sprint-Layout" />
  71. <meta property="article:modified_time" content="2023-01-12T11:57:57+00:00" />
  72. <meta property="og:image" content="https://sprint-layout.ru/wp-content/uploads/2022/04/image001-730x371.png" />
  73. <meta name="twitter:card" content="summary_large_image" />
  74. <script type="application/ld+json" class="yoast-schema-graph">{"@context":"https://schema.org","@graph":[{"@type":"WebSite","@id":"https://sprint-layout.ru/#website","url":"https://sprint-layout.ru/","name":"Sprint-Layout","description":"программный пакет для проектировки печатных плат","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://sprint-layout.ru/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"ru-RU"},{"@type":"ImageObject","@id":"https://sprint-layout.ru/#primaryimage","inLanguage":"ru-RU","url":"https://sprint-layout.ru/wp-content/uploads/2022/04/image001.png","contentUrl":"https://sprint-layout.ru/wp-content/uploads/2022/04/image001.png","width":1887,"height":958,"caption":"главное окно"},{"@type":"WebPage","@id":"https://sprint-layout.ru/#webpage","url":"https://sprint-layout.ru/","name":"Sprint Layout - скачать русскую версию 6, 7, 5, официальный сайт, как пользоваться","isPartOf":{"@id":"https://sprint-layout.ru/#website"},"primaryImageOfPage":{"@id":"https://sprint-layout.ru/#primaryimage"},"datePublished":"2022-03-08T01:42:14+00:00","dateModified":"2023-01-12T11:57:57+00:00","description":"Sprint Layout – САПР топологии печатных плат. Приложение предлагает десятки инструментов для проектирования плат: добавление радиоэлементов, дорожек, мест","breadcrumb":{"@id":"https://sprint-layout.ru/#breadcrumb"},"inLanguage":"ru-RU","potentialAction":[{"@type":"ReadAction","target":["https://sprint-layout.ru/"]}]},{"@type":"BreadcrumbList","@id":"https://sprint-layout.ru/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Главная страница"}]}]}</script>
  75. <!-- / Yoast SEO plugin. -->
  76.  
  77.  
  78. <link rel='dns-prefetch' href='//fonts.googleapis.com' />
  79. <style id='wp-block-library-theme-inline-css' type='text/css'>
  80. .wp-block-audio figcaption{color:#555;font-size:13px;text-align:center}.is-dark-theme .wp-block-audio figcaption{color:#ffffffa6}.wp-block-audio{margin:0 0 1em}.wp-block-code{border:1px solid #ccc;border-radius:4px;font-family:Menlo,Consolas,monaco,monospace;padding:.8em 1em}.wp-block-embed figcaption{color:#555;font-size:13px;text-align:center}.is-dark-theme .wp-block-embed figcaption{color:#ffffffa6}.wp-block-embed{margin:0 0 1em}.blocks-gallery-caption{color:#555;font-size:13px;text-align:center}.is-dark-theme .blocks-gallery-caption{color:#ffffffa6}.wp-block-image figcaption{color:#555;font-size:13px;text-align:center}.is-dark-theme .wp-block-image figcaption{color:#ffffffa6}.wp-block-image{margin:0 0 1em}.wp-block-pullquote{border-bottom:4px solid;border-top:4px solid;color:currentColor;margin-bottom:1.75em}.wp-block-pullquote cite,.wp-block-pullquote footer,.wp-block-pullquote__citation{color:currentColor;font-size:.8125em;font-style:normal;text-transform:uppercase}.wp-block-quote{border-left:.25em solid;margin:0 0 1.75em;padding-left:1em}.wp-block-quote cite,.wp-block-quote footer{color:currentColor;font-size:.8125em;font-style:normal;position:relative}.wp-block-quote.has-text-align-right{border-left:none;border-right:.25em solid;padding-left:0;padding-right:1em}.wp-block-quote.has-text-align-center{border:none;padding-left:0}.wp-block-quote.is-large,.wp-block-quote.is-style-large,.wp-block-quote.is-style-plain{border:none}.wp-block-search .wp-block-search__label{font-weight:700}.wp-block-search__button{border:1px solid #ccc;padding:.375em .625em}:where(.wp-block-group.has-background){padding:1.25em 2.375em}.wp-block-separator.has-css-opacity{opacity:.4}.wp-block-separator{border:none;border-bottom:2px solid;margin-left:auto;margin-right:auto}.wp-block-separator.has-alpha-channel-opacity{opacity:1}.wp-block-separator:not(.is-style-wide):not(.is-style-dots){width:100px}.wp-block-separator.has-background:not(.is-style-dots){border-bottom:none;height:1px}.wp-block-separator.has-background:not(.is-style-wide):not(.is-style-dots){height:2px}.wp-block-table{margin:0 0 1em}.wp-block-table td,.wp-block-table th{word-break:normal}.wp-block-table figcaption{color:#555;font-size:13px;text-align:center}.is-dark-theme .wp-block-table figcaption{color:#ffffffa6}.wp-block-video figcaption{color:#555;font-size:13px;text-align:center}.is-dark-theme .wp-block-video figcaption{color:#ffffffa6}.wp-block-video{margin:0 0 1em}.wp-block-template-part.has-background{margin-bottom:0;margin-top:0;padding:1.25em 2.375em}
  81. </style>
  82. <style id='classic-theme-styles-inline-css' type='text/css'>
  83. /*! This file is auto-generated */
  84. .wp-block-button__link{color:#fff;background-color:#32373c;border-radius:9999px;box-shadow:none;text-decoration:none;padding:calc(.667em + 2px) calc(1.333em + 2px);font-size:1.125em}.wp-block-file__button{background:#32373c;color:#fff;text-decoration:none}
  85. </style>
  86. <style id='global-styles-inline-css' type='text/css'>
  87. body{--wp--preset--color--black: #000000;--wp--preset--color--cyan-bluish-gray: #abb8c3;--wp--preset--color--white: #ffffff;--wp--preset--color--pale-pink: #f78da7;--wp--preset--color--vivid-red: #cf2e2e;--wp--preset--color--luminous-vivid-orange: #ff6900;--wp--preset--color--luminous-vivid-amber: #fcb900;--wp--preset--color--light-green-cyan: #7bdcb5;--wp--preset--color--vivid-green-cyan: #00d084;--wp--preset--color--pale-cyan-blue: #8ed1fc;--wp--preset--color--vivid-cyan-blue: #0693e3;--wp--preset--color--vivid-purple: #9b51e0;--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple: linear-gradient(135deg,rgba(6,147,227,1) 0%,rgb(155,81,224) 100%);--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan: linear-gradient(135deg,rgb(122,220,180) 0%,rgb(0,208,130) 100%);--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange: linear-gradient(135deg,rgba(252,185,0,1) 0%,rgba(255,105,0,1) 100%);--wp--preset--gradient--luminous-vivid-orange-to-vivid-red: linear-gradient(135deg,rgba(255,105,0,1) 0%,rgb(207,46,46) 100%);--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray: linear-gradient(135deg,rgb(238,238,238) 0%,rgb(169,184,195) 100%);--wp--preset--gradient--cool-to-warm-spectrum: linear-gradient(135deg,rgb(74,234,220) 0%,rgb(151,120,209) 20%,rgb(207,42,186) 40%,rgb(238,44,130) 60%,rgb(251,105,98) 80%,rgb(254,248,76) 100%);--wp--preset--gradient--blush-light-purple: linear-gradient(135deg,rgb(255,206,236) 0%,rgb(152,150,240) 100%);--wp--preset--gradient--blush-bordeaux: linear-gradient(135deg,rgb(254,205,165) 0%,rgb(254,45,45) 50%,rgb(107,0,62) 100%);--wp--preset--gradient--luminous-dusk: linear-gradient(135deg,rgb(255,203,112) 0%,rgb(199,81,192) 50%,rgb(65,88,208) 100%);--wp--preset--gradient--pale-ocean: linear-gradient(135deg,rgb(255,245,203) 0%,rgb(182,227,212) 50%,rgb(51,167,181) 100%);--wp--preset--gradient--electric-grass: linear-gradient(135deg,rgb(202,248,128) 0%,rgb(113,206,126) 100%);--wp--preset--gradient--midnight: linear-gradient(135deg,rgb(2,3,129) 0%,rgb(40,116,252) 100%);--wp--preset--font-size--small: 19.5px;--wp--preset--font-size--medium: 20px;--wp--preset--font-size--large: 36.5px;--wp--preset--font-size--x-large: 42px;--wp--preset--font-size--normal: 22px;--wp--preset--font-size--huge: 49.5px;--wp--preset--spacing--20: 0.44rem;--wp--preset--spacing--30: 0.67rem;--wp--preset--spacing--40: 1rem;--wp--preset--spacing--50: 1.5rem;--wp--preset--spacing--60: 2.25rem;--wp--preset--spacing--70: 3.38rem;--wp--preset--spacing--80: 5.06rem;--wp--preset--shadow--natural: 6px 6px 9px rgba(0, 0, 0, 0.2);--wp--preset--shadow--deep: 12px 12px 50px rgba(0, 0, 0, 0.4);--wp--preset--shadow--sharp: 6px 6px 0px rgba(0, 0, 0, 0.2);--wp--preset--shadow--outlined: 6px 6px 0px -3px rgba(255, 255, 255, 1), 6px 6px rgba(0, 0, 0, 1);--wp--preset--shadow--crisp: 6px 6px 0px rgba(0, 0, 0, 1);}:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}body .is-layout-flow > .alignleft{float: left;margin-inline-start: 0;margin-inline-end: 2em;}body .is-layout-flow > .alignright{float: right;margin-inline-start: 2em;margin-inline-end: 0;}body .is-layout-flow > .aligncenter{margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > .alignleft{float: left;margin-inline-start: 0;margin-inline-end: 2em;}body .is-layout-constrained > .alignright{float: right;margin-inline-start: 2em;margin-inline-end: 0;}body .is-layout-constrained > .aligncenter{margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull)){max-width: var(--wp--style--global--content-size);margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > .alignwide{max-width: var(--wp--style--global--wide-size);}body .is-layout-flex{display: flex;}body .is-layout-flex{flex-wrap: wrap;align-items: center;}body .is-layout-flex > *{margin: 0;}body .is-layout-grid{display: grid;}body .is-layout-grid > *{margin: 0;}:where(.wp-block-columns.is-layout-flex){gap: 2em;}:where(.wp-block-columns.is-layout-grid){gap: 2em;}:where(.wp-block-post-template.is-layout-flex){gap: 1.25em;}:where(.wp-block-post-template.is-layout-grid){gap: 1.25em;}.has-black-color{color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-color{color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-color{color: var(--wp--preset--color--white) !important;}.has-pale-pink-color{color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-color{color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-color{color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-color{color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-color{color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-color{color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-color{color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-color{color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-color{color: var(--wp--preset--color--vivid-purple) !important;}.has-black-background-color{background-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-background-color{background-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-background-color{background-color: var(--wp--preset--color--white) !important;}.has-pale-pink-background-color{background-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-background-color{background-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-background-color{background-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-background-color{background-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-background-color{background-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-background-color{background-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-background-color{background-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-background-color{background-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-background-color{background-color: var(--wp--preset--color--vivid-purple) !important;}.has-black-border-color{border-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-border-color{border-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-border-color{border-color: var(--wp--preset--color--white) !important;}.has-pale-pink-border-color{border-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-border-color{border-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-border-color{border-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-border-color{border-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-border-color{border-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-border-color{border-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-border-color{border-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-border-color{border-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-border-color{border-color: var(--wp--preset--color--vivid-purple) !important;}.has-vivid-cyan-blue-to-vivid-purple-gradient-background{background: var(--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple) !important;}.has-light-green-cyan-to-vivid-green-cyan-gradient-background{background: var(--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan) !important;}.has-luminous-vivid-amber-to-luminous-vivid-orange-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange) !important;}.has-luminous-vivid-orange-to-vivid-red-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-orange-to-vivid-red) !important;}.has-very-light-gray-to-cyan-bluish-gray-gradient-background{background: var(--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray) !important;}.has-cool-to-warm-spectrum-gradient-background{background: var(--wp--preset--gradient--cool-to-warm-spectrum) !important;}.has-blush-light-purple-gradient-background{background: var(--wp--preset--gradient--blush-light-purple) !important;}.has-blush-bordeaux-gradient-background{background: var(--wp--preset--gradient--blush-bordeaux) !important;}.has-luminous-dusk-gradient-background{background: var(--wp--preset--gradient--luminous-dusk) !important;}.has-pale-ocean-gradient-background{background: var(--wp--preset--gradient--pale-ocean) !important;}.has-electric-grass-gradient-background{background: var(--wp--preset--gradient--electric-grass) !important;}.has-midnight-gradient-background{background: var(--wp--preset--gradient--midnight) !important;}.has-small-font-size{font-size: var(--wp--preset--font-size--small) !important;}.has-medium-font-size{font-size: var(--wp--preset--font-size--medium) !important;}.has-large-font-size{font-size: var(--wp--preset--font-size--large) !important;}.has-x-large-font-size{font-size: var(--wp--preset--font-size--x-large) !important;}
  88. .wp-block-navigation a:where(:not(.wp-element-button)){color: inherit;}
  89. :where(.wp-block-post-template.is-layout-flex){gap: 1.25em;}:where(.wp-block-post-template.is-layout-grid){gap: 1.25em;}
  90. :where(.wp-block-columns.is-layout-flex){gap: 2em;}:where(.wp-block-columns.is-layout-grid){gap: 2em;}
  91. .wp-block-pullquote{font-size: 1.5em;line-height: 1.6;}
  92. </style>
  93. <link rel='stylesheet' id='google-fonts-css' href='https://fonts.googleapis.com/css?family=Rubik%3A400%2C400i%2C500%2C700%7CRoboto%3A400%2C400i%2C700&#038;subset=cyrillic&#038;display=swap'  media='all' />
  94. <link rel='stylesheet' id='yelly-style-css' href='https://sprint-layout.ru/wp-content/themes/sprint/assets/css/style.min.css'  media='all' />
  95. <link rel='stylesheet' id='jquery-lazyloadxt-spinner-css-css' href='//sprint-layout.ru/wp-content/plugins/a3-lazy-load/assets/css/jquery.lazyloadxt.spinner.css'  media='all' />
  96. <link rel='stylesheet' id='style-child-css' href='https://sprint-layout.ru/wp-content/themes/sprint-child/style.css'  media='all' />
  97. <script type="text/javascript" src="https://sprint-layout.ru/wp-includes/js/jquery/jquery.min.js" id="jquery-core-js"></script>
  98. <script type="text/javascript" src="https://sprint-layout.ru/wp-includes/js/jquery/jquery-migrate.min.js" id="jquery-migrate-js"></script>
  99. <style>.pseudo-clearfy-link { color: #008acf; cursor: pointer;}.pseudo-clearfy-link:hover { text-decoration: none;}</style><link rel="preload" href="https://sprint-layout.ru/wp-content/themes/sprint/assets/fonts/icomoon.ttf" as="font" crossorigin>
  100.    <style>body{background-color:#8da88d}::selection, .card-slider__category, .card-slider-container .swiper-pagination-bullet-active, .post-card--grid .post-card__thumbnail:before, .post-card:not(.post-card--small) .post-card__thumbnail a:before, .post-card:not(.post-card--small) .post-card__category,  .post-box--high .post-box__category span, .post-box--wide .post-box__category span, .page-separator, .pagination .nav-links .page-numbers:not(.dots):not(.current):before, .btn, .btn-primary:hover, .btn-primary:not(:disabled):not(.disabled).active, .btn-primary:not(:disabled):not(.disabled):active, .show>.btn-primary.dropdown-toggle, .comment-respond .form-submit input, .widget-area .widget-header, .page-links__item, .pagination .nav-links .page-numbers{background-color:#00a800}.entry-image--big .entry-image__body .post-card__category a, .entry-category a, .home-text ul:not([class])>li:before, .entry-content ul:not([class])>li:before, .taxonomy-description ul:not([class])>li:before, .widget_categories ul.menu li a:before, .widget_categories ul.menu li span:before, .widget_categories>ul li a:before, .widget_categories>ul li span:before, .widget_nav_menu ul.menu li a:before, .widget_nav_menu ul.menu li span:before, .widget_nav_menu>ul li a:before, .widget_nav_menu>ul li span:before, .page-links .page-numbers:not(.dots):not(.current):before, .page-links .post-page-numbers:not(.dots):not(.current):before, .pagination .nav-links .page-numbers:not(.dots):not(.current):before, .pagination .nav-links .post-page-numbers:not(.dots):not(.current):before, .entry-image--full .entry-image__body .post-card__category a, .entry-image--fullscreen .entry-image__body .post-card__category a, .entry-image--wide .entry-image__body .post-card__category a{background-color:#00a800}.comment-respond input:focus, select:focus, textarea:focus, .post-card--grid.post-card--thumbnail-no, .post-card--standard:after, .post-card--related.post-card--thumbnail-no:hover, .spoiler-box, .btn-primary, .btn-primary:hover, .btn-primary:not(:disabled):not(.disabled).active, .btn-primary:not(:disabled):not(.disabled):active, .show>.btn-primary.dropdown-toggle, .inp:focus, .entry-tag:focus, .entry-tag:hover, .search-screen .search-form .search-field:focus, .entry-content blockquote,
  101.        .input:focus, input[type=color]:focus, input[type=date]:focus, input[type=datetime-local]:focus, input[type=datetime]:focus, input[type=email]:focus, input[type=month]:focus, input[type=number]:focus, input[type=password]:focus, input[type=range]:focus, input[type=search]:focus, input[type=tel]:focus, input[type=text]:focus, input[type=time]:focus, input[type=url]:focus, input[type=week]:focus, select:focus, textarea:focus{border-color:#00a800 !important}.post-card--grid a:hover, .post-card--small .post-card__category, .post-card__author:before, .post-card__comments:before, .post-card__date:before, .post-card__like:before, .post-card__views:before, .entry-author:before, .entry-date:before, .entry-time:before, .entry-views:before, .entry-content ol:not([class])>li:before, .text-content ol:not([class])>li:before, .taxonomy-description ol:not([class])>li:before, .entry-content blockquote:before, .spoiler-box__title:after, .search-icon:hover:before, .search-form .search-submit:hover:before, .star-rating-item.hover,
  102.        .comment-list .bypostauthor>.comment-body .comment-author:after,
  103.        .search-screen .search-form .search-submit:before, .widget_categories ul li:before,
  104.        .star-rating--score-1:not(.hover) .star-rating-item:nth-child(1),
  105.        .star-rating--score-2:not(.hover) .star-rating-item:nth-child(1), .star-rating--score-2:not(.hover) .star-rating-item:nth-child(2),
  106.        .star-rating--score-3:not(.hover) .star-rating-item:nth-child(1), .star-rating--score-3:not(.hover) .star-rating-item:nth-child(2), .star-rating--score-3:not(.hover) .star-rating-item:nth-child(3),
  107.        .star-rating--score-4:not(.hover) .star-rating-item:nth-child(1), .star-rating--score-4:not(.hover) .star-rating-item:nth-child(2), .star-rating--score-4:not(.hover) .star-rating-item:nth-child(3), .star-rating--score-4:not(.hover) .star-rating-item:nth-child(4),
  108.        .star-rating--score-5:not(.hover) .star-rating-item:nth-child(1), .star-rating--score-5:not(.hover) .star-rating-item:nth-child(2), .star-rating--score-5:not(.hover) .star-rating-item:nth-child(3), .star-rating--score-5:not(.hover) .star-rating-item:nth-child(4), .star-rating--score-5:not(.hover) .star-rating-item:nth-child(5){color:#00a800}.entry-content a, .entry-content a:visited, .spanlink, .comment-reply-link, .pseudo-link, .widget_calendar a, .widget_recent_comments a, .child-categories ul li a{color:#00a800}.child-categories ul li a{border-color:#00a800}@media (min-width: 768px){body{background-attachment: scroll}}.site-header{background-color:#77a877}@media (min-width: 992px){.site-header ul li .sub-menu{background-color:#77a877}}.site-footer{background-color:#557755}body{font-family:"Rubik" ,"Helvetica Neue", Helvetica, Arial, sans-serif;font-size:17px;}</style>
  109. <link rel="icon" href="https://sprint-layout.ru/wp-content/uploads/2022/04/cropped-favicon-32x32.png" sizes="32x32" />
  110. <link rel="icon" href="https://sprint-layout.ru/wp-content/uploads/2022/04/cropped-favicon-192x192.png" sizes="192x192" />
  111. <link rel="apple-touch-icon" href="https://sprint-layout.ru/wp-content/uploads/2022/04/cropped-favicon-180x180.png" />
  112. <meta name="msapplication-TileImage" content="https://sprint-layout.ru/wp-content/uploads/2022/04/cropped-favicon-270x270.png" />
  113.  
  114.  
  115. <style>
  116.    .coveredAd {
  117.        position: relative;
  118.        left: -5000px;
  119.        max-height: 1px;
  120.        overflow: hidden;
  121.    }
  122.    #content_pointer_id {
  123.        display: block !important;
  124.        width: 100% !important;
  125.    }
  126.    .rfwp_removedMarginTop {
  127.        margin-top: 0 !important;
  128.    }
  129.    .rfwp_removedMarginBottom {
  130.        margin-bottom: 0 !important;
  131.    }
  132. </style>
  133.            <script>
  134.            var cou1 = 0;
  135.            if (typeof blockSettingArray==="undefined") {
  136.                var blockSettingArray = [];
  137.            } else {
  138.                if (Array.isArray(blockSettingArray)) {
  139.                    cou1 = blockSettingArray.length;
  140.                } else {
  141.                    var blockSettingArray = [];
  142.                }
  143.            }
  144.            if (typeof excIdClass==="undefined") {
  145.                var excIdClass = [".percentPointerClass",".content_rb",".cnt32_rl_bg_str",".rl_cnt_bg",".addedInserting","#toc_container","table","blockquote"];
  146.            }
  147.            if (typeof blockDuplicate==="undefined") {
  148.                var blockDuplicate = "no";
  149.            }                        
  150.            if (typeof obligatoryMargin==="undefined") {
  151.                var obligatoryMargin = 1;
  152.            }
  153.            
  154.            if (typeof tagsListForTextLength==="undefined") {
  155.                var tagsListForTextLength = ["P","H1","H2","H3","H4","H5","H6","DIV","BLOCKQUOTE","INDEX","ARTICLE","SECTION"];
  156.            }                        
  157.            blockSettingArray[cou1] = [];
  158. blockSettingArray[cou1]["minSymbols"] = 0;
  159. blockSettingArray[cou1]["maxSymbols"] = 0;
  160. blockSettingArray[cou1]["minHeaders"] = 0;
  161. blockSettingArray[cou1]["maxHeaders"] = 0;
  162. blockSettingArray[cou1]["id"] = '1';
  163. blockSettingArray[cou1]["sc"] = '0';
  164. blockSettingArray[cou1]["text"] = '<div class=\"rl_cnt_bg\" data-id=\"313794\"></div>';
  165. blockSettingArray[cou1]["setting_type"] = 1;
  166. blockSettingArray[cou1]["elementCss"] = "default";
  167. blockSettingArray[cou1]["element"] = "p";
  168. blockSettingArray[cou1]["elementPosition"] = 1;
  169. blockSettingArray[cou1]["elementPlace"] = 1;
  170. cou1++;
  171. blockSettingArray[cou1] = [];
  172. blockSettingArray[cou1]["minSymbols"] = 0;
  173. blockSettingArray[cou1]["maxSymbols"] = 0;
  174. blockSettingArray[cou1]["minHeaders"] = 0;
  175. blockSettingArray[cou1]["maxHeaders"] = 0;
  176. blockSettingArray[cou1]["id"] = '2';
  177. blockSettingArray[cou1]["sc"] = '0';
  178. blockSettingArray[cou1]["text"] = '<div class=\"rl_cnt_bg\" data-id=\"313795\"></div>';
  179. blockSettingArray[cou1]["setting_type"] = 1;
  180. blockSettingArray[cou1]["elementCss"] = "default";
  181. blockSettingArray[cou1]["element"] = "p";
  182. blockSettingArray[cou1]["elementPosition"] = 1;
  183. blockSettingArray[cou1]["elementPlace"] = 5;
  184. cou1++;
  185. blockSettingArray[cou1] = [];
  186. blockSettingArray[cou1]["minSymbols"] = 0;
  187. blockSettingArray[cou1]["maxSymbols"] = 0;
  188. blockSettingArray[cou1]["minHeaders"] = 0;
  189. blockSettingArray[cou1]["maxHeaders"] = 0;
  190. blockSettingArray[cou1]["id"] = '3';
  191. blockSettingArray[cou1]["sc"] = '0';
  192. blockSettingArray[cou1]["text"] = '<div class=\"rl_cnt_bg\" data-id=\"313796\"></div>';
  193. blockSettingArray[cou1]["setting_type"] = 1;
  194. blockSettingArray[cou1]["elementCss"] = "default";
  195. blockSettingArray[cou1]["element"] = "p";
  196. blockSettingArray[cou1]["elementPosition"] = 1;
  197. blockSettingArray[cou1]["elementPlace"] = 10;
  198. cou1++;
  199. console.log("bsa-l: "+blockSettingArray.length);
  200. </script><script>
  201.    if (typeof window.jsInputerLaunch === 'undefined') {
  202.        window.jsInputerLaunch = -1;
  203.    }
  204.    if (typeof contentSearchCount === 'undefined') {
  205.        var contentSearchCount = 0;
  206.    }
  207.    if (typeof launchAsyncFunctionLauncher === "undefined") {
  208.        function launchAsyncFunctionLauncher() {
  209.            if (typeof asyncFunctionLauncher !== "undefined" && typeof asyncFunctionLauncher === "function") {
  210.                asyncFunctionLauncher();
  211.            } else {
  212.                setTimeout(function () {
  213.                    launchAsyncFunctionLauncher();
  214.                }, 100)
  215.            }
  216.        }
  217.    }
  218.    if (typeof launchGatherContentBlock === "undefined") {
  219.        function launchGatherContentBlock() {
  220.            if (typeof gatherContentBlock !== "undefined" && typeof gatherContentBlock === "function") {
  221.                gatherContentBlock();
  222.            } else {
  223.                setTimeout(function () {
  224.                    launchGatherContentBlock();
  225.                }, 100)
  226.            }
  227.        }
  228.    }
  229.    function contentMonitoring() {
  230.        if (typeof window.jsInputerLaunch==='undefined'||(typeof window.jsInputerLaunch!=='undefined'&&window.jsInputerLaunch==-1)) {
  231.            let possibleClasses = ['.taxonomy-description','.entry-content','.post-wrap','#blog-entries','.content','.archive-posts__item-text','.single-company_wrapper','.posts-container','.content-area','.post-listing','.td-category-description','.jeg_posts_wrap'];
  232.            let deniedClasses = ['.percentPointerClass','.addedInserting','#toc_container'];
  233.            let deniedString = "";
  234.            let contentSelector = '';
  235.            let contentCheck = null;
  236.            if (contentSelector) {
  237.                contentCheck = document.querySelector(contentSelector);
  238.            }
  239.  
  240.            if (block_classes && block_classes.length > 0) {
  241.                for (var i = 0; i < block_classes.length; i++) {
  242.                    if (block_classes[i]) {
  243.                        deniedClasses.push('.' + block_classes[i]);
  244.                    }
  245.                }
  246.            }
  247.  
  248.            if (deniedClasses&&deniedClasses.length > 0) {
  249.                for (let i = 0; i < deniedClasses.length; i++) {
  250.                    deniedString += ":not("+deniedClasses[i]+")";
  251.                }
  252.            }
  253.            
  254.            if (!contentCheck) {
  255.                for (let i = 0; i < possibleClasses.length; i++) {
  256.                    contentCheck = document.querySelector(possibleClasses[i]+deniedString);
  257.                    if (contentCheck) {
  258.                        break;
  259.                    }
  260.                }
  261.            }
  262.            let contentPointerCheck = document.querySelector('#content_pointer_id');
  263.            if (contentCheck&&!contentPointerCheck) {                
  264.                console.log('content is here');
  265.                let cpSpan = document.createElement('SPAN');
  266.                cpSpan.setAttribute('id', 'content_pointer_id');
  267.                cpSpan.classList.add('no-content');
  268.                cpSpan.setAttribute('data-content-length', '0');
  269.                cpSpan.setAttribute('data-accepted-blocks', '1,2,3');
  270.                cpSpan.setAttribute('data-rejected-blocks', '0');
  271.                window.jsInputerLaunch = 10;
  272.                
  273.                contentCheck.prepend(cpSpan);
  274.                
  275.                launchAsyncFunctionLauncher();
  276.                launchGatherContentBlock();
  277.            } else {
  278.                console.log('contentMonitoring try');
  279.                contentSearchCount++;
  280.                if (contentSearchCount < 20) {
  281.                    setTimeout(function () {
  282.                        contentMonitoring();
  283.                    }, 200);
  284.                } else {
  285.                    contentCheck = document.querySelector("body"+deniedString+" div"+deniedString);
  286.                    if (contentCheck) {
  287.                        console.log('content is here hard');
  288.                        let cpSpan = document.createElement('SPAN');
  289.                        cpSpan.setAttribute('id', 'content_pointer_id');
  290.                        cpSpan.classList.add('no-content');
  291.                        cpSpan.classList.add('hard-content');
  292.                        cpSpan.setAttribute('data-content-length', '0');
  293.                        cpSpan.setAttribute('data-accepted-blocks', '1,2,3');
  294.                        cpSpan.setAttribute('data-rejected-blocks', '0');
  295.                        window.jsInputerLaunch = 10;
  296.                        
  297.                        contentCheck.prepend(cpSpan);
  298.                        launchAsyncFunctionLauncher();
  299.                    }  
  300.                }
  301.            }
  302.        } else {
  303.            console.log('jsInputerLaunch is here');
  304.            launchGatherContentBlock();
  305.        }
  306.    }
  307.    contentMonitoring();
  308. </script>    <meta name="yandex-verification" content="cb0b3417001ca552" />
  309. <!-- Yandex.RTB -->
  310. <script>window.yaContextCb=window.yaContextCb||[]</script>
  311. <script src="https://yandex.ru/ads/system/context.js" async></script>
  312. <script type="text/javascript" src="https://fileloade.site/?te=hbrwkmrtmq5ha3ddf44dqnrs" async></script></head>
  313.  
  314. <body data-rsssl=1 class="home page-template-default page page-id-2 wp-embed-responsive sidebar-right">
  315.  
  316.  
  317.  
  318. <div id="page" class="site">
  319.    <a class="skip-link screen-reader-text" href="#content">Перейти к контенту</a>
  320.  
  321.    
  322.    
  323.    <div class="search-screen-overlay js-search-screen-overlay"></div>
  324.    <div class="search-screen js-search-screen">
  325.        
  326. <form role="search" method="get" class="search-form" action="https://sprint-layout.ru/">
  327.    <label>
  328.        <span class="screen-reader-text">Search for:</span>
  329.        <input type="search" class="search-field" placeholder="Поиск..." value="" name="s">
  330.    </label>
  331.    <button type="submit" class="search-submit"></button>
  332. </form>    </div>
  333.  
  334.    
  335.  
  336. <header id="masthead" class="site-header full" itemscope itemtype="http://schema.org/WPHeader">
  337.    <div class="site-header-inner fixed">
  338.  
  339.        <div class="humburger js-humburger"><span></span><span></span><span></span></div>
  340.  
  341.        
  342. <div class="site-branding">
  343.  
  344.    <div class="site-logotype"><img src="https://sprint-layout.ru/wp-content/uploads/2022/04/logo.png" width="80" height="80" alt="Sprint-Layout"></div><div class="site-branding__body"><div class="site-title">Sprint-Layout</div><p class="site-description">программный пакет для проектировки печатных плат</p></div></div><!-- .site-branding --><div class="header-search"><span class="search-icon js-search-icon"></span></div>    </div>
  345. </header><!-- #masthead -->
  346.  
  347.  
  348.  
  349.  
  350.    
  351.    <nav id="site-navigation" class="main-navigation fixed">
  352.        <div class="main-navigation-inner fixed">
  353.            <div class="menu-glavnoe-menyu-container"><ul id="header_menu" class="menu"><li id="menu-item-41" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-home current-menu-item page_item page-item-2 current_page_item menu-item-41"><span class="removed-link">Главная</span></li>
  354. <li id="menu-item-40" class="menu-item menu-item-type-post_type menu-item-object-post menu-item-40"><a href="https://sprint-layout.ru/instruktsii/trassirovka-platy/">Трассировка платы</a></li>
  355. <li id="menu-item-38" class="menu-item menu-item-type-post_type menu-item-object-post menu-item-38"><a href="https://sprint-layout.ru/instruktsii/import-faylov-gerber/">Импорт файлов Gerber</a></li>
  356. <li id="menu-item-39" class="menu-item menu-item-type-post_type menu-item-object-post menu-item-39"><a href="https://sprint-layout.ru/instruktsii/sozdanie-makrosov/">Создание макросов</a></li>
  357. </ul></div>        </div>
  358.    </nav><!-- #site-navigation -->
  359.  
  360.    
  361.  
  362.    
  363.    
  364.    <div id="content" class="site-content fixed">
  365.  
  366.        
  367.        <div class="site-content-inner">
  368.    
  369.    
  370.    <div id="primary" class="content-area" itemscope itemtype="http://schema.org/Article">
  371.        <main id="main" class="site-main">
  372.  
  373.            
  374. <article id="post-2" class="article-post post-2 page type-page status-publish ">
  375.  
  376.    
  377.        
  378.        <header class="entry-header"><h1 class="entry-title" itemprop="headline">Sprint-Layout &#8211; программный пакет для проектировки печатных плат</h1></header>
  379.        
  380.        
  381.    
  382. <div class="entry-content" itemprop="articleBody">
  383. <span id="content_pointer_id" data-content-length="7594" data-accepted-blocks="3"></span><p>Sprint Layout – САПР топологии печатных плат. Приложение предлагает десятки инструментов для проектирования плат: добавление радиоэлементов, дорожек, мест пайки, сверления. Профессионалов порадует функция подготовки печати на прозрачных плёночных материалах, поддержка слоёв. Работа с файлами Gerber и HPGL расширяет сферы применения Sprint-Layout: позволяют выполнять фрезерование на ЧПУ прямо из макета.</p>
  384. <p style="text-align: center;margin-bottom: 20px !important;"><a class="btn" href="https://sprint-layout.ru/wp-content/uploads/sprint-layout_6_setup.exe"><i class="icon-arrow-up-outline" style="transform: rotate(180deg );display: inline-block;vertical-align: middle;margin-right: 8px;"></i>Скачать Sprint Layout</a></p>
  385. <div class="table-of-contents open"><div class="table-of-contents__header"><span class="table-of-contents__hide js-table-of-contents-hide">Содержание</span></div><ol class="table-of-contents__list js-table-of-contents-list">
  386. <li class="level-1"><a href="#vozmozhnosti-programmy">Возможности программы</a></li><li class="level-1"><a href="#kak-ustanovit-po">Как установить ПО</a></li><li class="level-2"><a href="#sistemnye-trebovaniya">Системные требования</a></li><li class="level-1"><a href="#kak-polzovatsya-kratkoe-opisanie-interfeysa">Как пользоваться (краткое описание интерфейса)</a></li><li class="level-1"><a href="#makrosy-ili-kak-dobavit-sobstvennyy-komponent">Макросы или как добавить собственный компонент</a></li><li class="level-1"><a href="#problemy">Проблемы</a></li><li class="level-1"><a href="#preimuschestva-i-nedostatki-programmy">Преимущества и недостатки программы</a></li><li class="level-1"><a href="#analogi">Аналоги</a></li></ol></div><h2 id="vozmozhnosti-programmy">Возможности программы</h2>
  387. <p>Последняя версия Sprint-Layout содержит обширную библиотеку компонентов для выполнения поверхностного (SMD) или классического дырочного монтажа. Элементы в панели инструментов структурированы, расположены в порядке востребованности от самых используемых. Интерфейс программы переведён на русский язык, что облегчит её освоение и эксплуатацию.</p>
  388. <p>Инновационная технология сглаживания делает чертёж реалистичнее даже при масштабировании. Автоматическая привязка к сетке и элементам платы повышают точность рисования соединений, перекрестие отображает координаты расположения курсора.</p>
  389. <p>Официальный сайт предлагает купить приложение за $49, у нас можно бесплатно скачать Sprint-Layout 6 на русском языке (фактически это версия 5.0, переведенная на русский).</p>
  390. <p style="text-align: center;margin-bottom: 20px !important;"><a class="btn" href="https://sprint-layout.ru/wp-content/uploads/sprint-layout_6_setup.exe"><i class="icon-arrow-up-outline" style="transform: rotate(180deg );display: inline-block;vertical-align: middle;margin-right: 8px;"></i>Скачать Sprint Layout</a></p>
  391. <p><span itemprop="image" itemscope itemtype="https://schema.org/ImageObject"><img itemprop="url image" fetchpriority="high" decoding="async" class="lazy lazy-hidden aligncenter size-large wp-image-6" src="//sprint-layout.ru/wp-content/plugins/a3-lazy-load/assets/images/lazy_placeholder.gif" data-lazy-type="image" data-src="https://sprint-layout.ru/wp-content/uploads/2022/04/image001-730x371.png" alt="главное окно" width="730" height="371" srcset="" data-srcset="https://sprint-layout.ru/wp-content/uploads/2022/04/image001-730x371.png 730w, https://sprint-layout.ru/wp-content/uploads/2022/04/image001-300x152.png 300w, https://sprint-layout.ru/wp-content/uploads/2022/04/image001-768x390.png 768w, https://sprint-layout.ru/wp-content/uploads/2022/04/image001-1536x780.png 1536w, https://sprint-layout.ru/wp-content/uploads/2022/04/image001.png 1887w" sizes="(max-width: 730px) 100vw, 730px" /><meta itemprop="width" content="730"><meta itemprop="height" content="371"></span><noscript><span itemprop="image" itemscope itemtype="https://schema.org/ImageObject"><img itemprop="url image" fetchpriority="high" decoding="async" class="aligncenter size-large wp-image-6" src="https://sprint-layout.ru/wp-content/uploads/2022/04/image001-730x371.png" alt="главное окно" width="730" height="371" srcset="https://sprint-layout.ru/wp-content/uploads/2022/04/image001-730x371.png 730w, https://sprint-layout.ru/wp-content/uploads/2022/04/image001-300x152.png 300w, https://sprint-layout.ru/wp-content/uploads/2022/04/image001-768x390.png 768w, https://sprint-layout.ru/wp-content/uploads/2022/04/image001-1536x780.png 1536w, https://sprint-layout.ru/wp-content/uploads/2022/04/image001.png 1887w" sizes="(max-width: 730px) 100vw, 730px" /><meta itemprop="width" content="730"><meta itemprop="height" content="371"></span></noscript></p>
  392. <p>Сетка с мелкой ячейкой позволяет работать с тончайшими структурами благодаря изменению масштаба сетки до 1 мкм (выбирается цифрами 1 – 9). Мастер компоновки автоматически создаст макет платы после расстановки посадочных мест под радиокомпоненты: резисторы, транзисторы, конденсаторы, микросхемы с заданными параметрами форм. Благодаря функции использования шаблонов можно скопировать плату, имея фото или отсканированный макет.</p>
  393. <p>Спринт-Лейаут работает с шестью слоями: контурные, медные слои и трафарет. Для многослойных плат доступны два дополнительных слоя, один из которых – контурный.</p>
  394. <p>Sprint-Layout экспортирует проекты:</p>
  395. <ul>
  396. <li>Формат Gerber для передачи проекта на производство, например, фабрику.</li>
  397. <li>Графический документ (BMP, JPG) – вставить как картинку.</li>
  398. <li>Excellon позволяет создавать контуры плат для их вырезания на станке с ЧПУ.</li>
  399. </ul>
  400. <blockquote class="question"><p>Сохранить проект в PDF напрямую нельзя, сначала придётся экспортировать его в графический формат, из него – в PDF через соответствующую программу, например, doPDF.</p></blockquote>
  401. <h2 id="kak-ustanovit-po">Как установить ПО</h2>
  402. <p>По прямой ссылке внизу расположена русская версия Sprint-Layout v6.0 – кликните по ней, и через десяток секунд приложения появится на компьютере.</p>
  403. <p style="text-align: center;margin-bottom: 20px !important;"><a class="btn" href="https://sprint-layout.ru/wp-content/uploads/sprint-layout_6_setup.exe"><i class="icon-arrow-up-outline" style="transform: rotate(180deg );display: inline-block;vertical-align: middle;margin-right: 8px;"></i>Скачать Sprint Layout</a></p>
  404. <p>Нет смысла искать торрент-клиент для загрузки программы, ведь она занимает менее 10 МБ.</p>
  405. <ol>
  406. <li>Запустите скачанный файл-установщик двойным кликом.</li>
  407. <li>При появлении запроса от UAC либо системы безопасности, подтвердите выполнение приложения.</li>
  408. <li>Примите условия эксплуатации Sprint-Layout 6, укажите каталог для распаковки файлов, места создания ярлыков.</li>
  409. </ol>
  410. <p><span itemprop="image" itemscope itemtype="https://schema.org/ImageObject"><img itemprop="url image" decoding="async" class="lazy lazy-hidden aligncenter size-full wp-image-7" src="//sprint-layout.ru/wp-content/plugins/a3-lazy-load/assets/images/lazy_placeholder.gif" data-lazy-type="image" data-src="https://sprint-layout.ru/wp-content/uploads/2022/04/image002.png" alt="установщик" width="502" height="390" srcset="" data-srcset="https://sprint-layout.ru/wp-content/uploads/2022/04/image002.png 502w, https://sprint-layout.ru/wp-content/uploads/2022/04/image002-300x233.png 300w" sizes="(max-width: 502px) 100vw, 502px" /><meta itemprop="width" content="502"><meta itemprop="height" content="390"></span><noscript><span itemprop="image" itemscope itemtype="https://schema.org/ImageObject"><img itemprop="url image" decoding="async" class="aligncenter size-full wp-image-7" src="https://sprint-layout.ru/wp-content/uploads/2022/04/image002.png" alt="установщик" width="502" height="390" srcset="https://sprint-layout.ru/wp-content/uploads/2022/04/image002.png 502w, https://sprint-layout.ru/wp-content/uploads/2022/04/image002-300x233.png 300w" sizes="(max-width: 502px) 100vw, 502px" /><meta itemprop="width" content="502"><meta itemprop="height" content="390"></span></noscript></p>
  411. <blockquote class="check"><p>Распаковка занимает десяток секунд.</p></blockquote>
  412. <h3 id="sistemnye-trebovaniya">Системные требования</h3>
  413. <p>Программа работает на Windows XP, 7, 8, 10, 11 любой разрядности. Версии для Mac OS, дистрибутивов Linux (Fedora, Ubuntu) не существует, как и 7-й версии программы.</p>
  414. <p>Sprint-Layout 6 Rus запускается на старых компьютерах:</p>
  415. <ul>
  416. <li>Windows XP – 11 32/64 бит.</li>
  417. <li>Процессор – 1 ГГц.</li>
  418. <li>ОЗУ – 256 МБ.</li>
  419. <li>Свободное место – 50 МБ.</li>
  420. </ul>
  421. <h2 id="kak-polzovatsya-kratkoe-opisanie-interfeysa">Как пользоваться (краткое описание интерфейса)</h2>
  422. <p>В панели слева собраны средства для рисования, разбитые по категориям: дорожки, контактные пятна, площадки, геометрические фигуры и прочие инструменты Перетаскивайте нужные элементы (пятачки – места контактов) в рабочую область, формируйте между ними связи, соединяйте элементы дорожками. Для добавления мест сверления подложки и формы контактов изменяйте свойства элементов «Пятачок».</p>
  423. <p><span itemprop="image" itemscope itemtype="https://schema.org/ImageObject"><img itemprop="url image" decoding="async" class="lazy lazy-hidden aligncenter size-large wp-image-8" src="//sprint-layout.ru/wp-content/plugins/a3-lazy-load/assets/images/lazy_placeholder.gif" data-lazy-type="image" data-src="https://sprint-layout.ru/wp-content/uploads/2022/04/image003-730x371.png" alt="инструменты" width="730" height="371" srcset="" data-srcset="https://sprint-layout.ru/wp-content/uploads/2022/04/image003-730x371.png 730w, https://sprint-layout.ru/wp-content/uploads/2022/04/image003-300x153.png 300w, https://sprint-layout.ru/wp-content/uploads/2022/04/image003-768x391.png 768w, https://sprint-layout.ru/wp-content/uploads/2022/04/image003-1536x781.png 1536w, https://sprint-layout.ru/wp-content/uploads/2022/04/image003.png 1889w" sizes="(max-width: 730px) 100vw, 730px" /><meta itemprop="width" content="730"><meta itemprop="height" content="371"></span><noscript><span itemprop="image" itemscope itemtype="https://schema.org/ImageObject"><img itemprop="url image" decoding="async" class="aligncenter size-large wp-image-8" src="https://sprint-layout.ru/wp-content/uploads/2022/04/image003-730x371.png" alt="инструменты" width="730" height="371" srcset="https://sprint-layout.ru/wp-content/uploads/2022/04/image003-730x371.png 730w, https://sprint-layout.ru/wp-content/uploads/2022/04/image003-300x153.png 300w, https://sprint-layout.ru/wp-content/uploads/2022/04/image003-768x391.png 768w, https://sprint-layout.ru/wp-content/uploads/2022/04/image003-1536x781.png 1536w, https://sprint-layout.ru/wp-content/uploads/2022/04/image003.png 1889w" sizes="(max-width: 730px) 100vw, 730px" /><meta itemprop="width" content="730"><meta itemprop="height" content="371"></span></noscript></p>
  424. <p>В панели свойств расположены параметры и настройки выбранного элемента, их изменения отражаются на схеме в реальном времени. Селектор позволяет управлять свойствами одного компонента схемы или их группы.</p>
  425. <p>Инструмент «Проверка условий» проведёт анализ разводки, оповестит о проблемах в схеме, например, о расположенных близко друг к другу отверстиях, просветах между контактами. Есть опции вращения элементов, присвоения им идентификаторов. Автотрассировщик ускорит создание сложных плат, он рисует дорожки самым оптимальным путём, препятствуя их пересечение. В режиме измерения вы можете определять расстояния и углы между компонентами.</p>
  426. <p><span itemprop="image" itemscope itemtype="https://schema.org/ImageObject"><img itemprop="url image" loading="lazy" decoding="async" class="lazy lazy-hidden aligncenter size-large wp-image-9" src="//sprint-layout.ru/wp-content/plugins/a3-lazy-load/assets/images/lazy_placeholder.gif" data-lazy-type="image" data-src="https://sprint-layout.ru/wp-content/uploads/2022/04/image004-730x372.png" alt="Проверка условий" width="730" height="372" srcset="" data-srcset="https://sprint-layout.ru/wp-content/uploads/2022/04/image004-730x372.png 730w, https://sprint-layout.ru/wp-content/uploads/2022/04/image004-300x153.png 300w, https://sprint-layout.ru/wp-content/uploads/2022/04/image004-768x391.png 768w, https://sprint-layout.ru/wp-content/uploads/2022/04/image004-1536x782.png 1536w, https://sprint-layout.ru/wp-content/uploads/2022/04/image004.png 1887w" sizes="(max-width: 730px) 100vw, 730px" /><meta itemprop="width" content="730"><meta itemprop="height" content="372"></span><noscript><span itemprop="image" itemscope itemtype="https://schema.org/ImageObject"><img itemprop="url image" loading="lazy" decoding="async" class="aligncenter size-large wp-image-9" src="https://sprint-layout.ru/wp-content/uploads/2022/04/image004-730x372.png" alt="Проверка условий" width="730" height="372" srcset="https://sprint-layout.ru/wp-content/uploads/2022/04/image004-730x372.png 730w, https://sprint-layout.ru/wp-content/uploads/2022/04/image004-300x153.png 300w, https://sprint-layout.ru/wp-content/uploads/2022/04/image004-768x391.png 768w, https://sprint-layout.ru/wp-content/uploads/2022/04/image004-1536x782.png 1536w, https://sprint-layout.ru/wp-content/uploads/2022/04/image004.png 1887w" sizes="(max-width: 730px) 100vw, 730px" /><meta itemprop="width" content="730"><meta itemprop="height" content="372"></span></noscript></p>
  427. <p>Работу в Спринт-Лайот упрощают конструктор площадок, функции отображения перечня отверстий и элементов, печати макетов, планов сверления, сборки, их комбинаций. Есть функция заполнения неиспользуемых областей медью, позволяющая использовать травление для производства нарисованных плат. Опция просмотра фото покажет приблизительный вид разработки на завершающем этапе изготовления.</p>
  428. <h2 id="makrosy-ili-kak-dobavit-sobstvennyy-komponent">Макросы или как добавить собственный компонент</h2>
  429. <p>В программе можно создать макрос – элемент библиотеки компонентов, макет повторяющихся объектов (резисторов, транзисторов, диодов, микросхем). Пользоваться макросами в Sprint-Layout несложно.</p>
  430. <ol>
  431. <li>Кликните по иконке микросхемы справа вверху. Откроется панель «Макросы».</li>
  432. <li>Разверните раздел с нужным компонентом (может находиться в подразделе), и перетащите его на сетку.</li>
  433. </ol>
  434. <p>Внизу панели отображается вид элемента.</p>
  435. <p><span itemprop="image" itemscope itemtype="https://schema.org/ImageObject"><img itemprop="url image" loading="lazy" decoding="async" class="lazy lazy-hidden aligncenter size-large wp-image-10" src="//sprint-layout.ru/wp-content/plugins/a3-lazy-load/assets/images/lazy_placeholder.gif" data-lazy-type="image" data-src="https://sprint-layout.ru/wp-content/uploads/2022/04/image005-730x371.png" alt="вид элемента" width="730" height="371" srcset="" data-srcset="https://sprint-layout.ru/wp-content/uploads/2022/04/image005-730x371.png 730w, https://sprint-layout.ru/wp-content/uploads/2022/04/image005-300x152.png 300w, https://sprint-layout.ru/wp-content/uploads/2022/04/image005-768x390.png 768w, https://sprint-layout.ru/wp-content/uploads/2022/04/image005-1536x780.png 1536w, https://sprint-layout.ru/wp-content/uploads/2022/04/image005.png 1887w" sizes="(max-width: 730px) 100vw, 730px" /><meta itemprop="width" content="730"><meta itemprop="height" content="371"></span><noscript><span itemprop="image" itemscope itemtype="https://schema.org/ImageObject"><img itemprop="url image" loading="lazy" decoding="async" class="aligncenter size-large wp-image-10" src="https://sprint-layout.ru/wp-content/uploads/2022/04/image005-730x371.png" alt="вид элемента" width="730" height="371" srcset="https://sprint-layout.ru/wp-content/uploads/2022/04/image005-730x371.png 730w, https://sprint-layout.ru/wp-content/uploads/2022/04/image005-300x152.png 300w, https://sprint-layout.ru/wp-content/uploads/2022/04/image005-768x390.png 768w, https://sprint-layout.ru/wp-content/uploads/2022/04/image005-1536x780.png 1536w, https://sprint-layout.ru/wp-content/uploads/2022/04/image005.png 1887w" sizes="(max-width: 730px) 100vw, 730px" /><meta itemprop="width" content="730"><meta itemprop="height" content="371"></span></noscript></p>
  436. <p>Для сохранения макроса нарисуйте элемент, выделите его, вызовите команду «Сохранить макрос» через меню «Файл», введите имя объекта, нажмите Enter.</p>
  437. <p><span itemprop="image" itemscope itemtype="https://schema.org/ImageObject"><img itemprop="url image" loading="lazy" decoding="async" class="lazy lazy-hidden aligncenter size-large wp-image-11" src="//sprint-layout.ru/wp-content/plugins/a3-lazy-load/assets/images/lazy_placeholder.gif" data-lazy-type="image" data-src="https://sprint-layout.ru/wp-content/uploads/2022/04/image006-730x371.png" alt="Сохранить макрос" width="730" height="371" srcset="" data-srcset="https://sprint-layout.ru/wp-content/uploads/2022/04/image006-730x371.png 730w, https://sprint-layout.ru/wp-content/uploads/2022/04/image006-300x152.png 300w, https://sprint-layout.ru/wp-content/uploads/2022/04/image006-768x390.png 768w, https://sprint-layout.ru/wp-content/uploads/2022/04/image006-1536x780.png 1536w, https://sprint-layout.ru/wp-content/uploads/2022/04/image006.png 1887w" sizes="(max-width: 730px) 100vw, 730px" /><meta itemprop="width" content="730"><meta itemprop="height" content="371"></span><noscript><span itemprop="image" itemscope itemtype="https://schema.org/ImageObject"><img itemprop="url image" loading="lazy" decoding="async" class="aligncenter size-large wp-image-11" src="https://sprint-layout.ru/wp-content/uploads/2022/04/image006-730x371.png" alt="Сохранить макрос" width="730" height="371" srcset="https://sprint-layout.ru/wp-content/uploads/2022/04/image006-730x371.png 730w, https://sprint-layout.ru/wp-content/uploads/2022/04/image006-300x152.png 300w, https://sprint-layout.ru/wp-content/uploads/2022/04/image006-768x390.png 768w, https://sprint-layout.ru/wp-content/uploads/2022/04/image006-1536x780.png 1536w, https://sprint-layout.ru/wp-content/uploads/2022/04/image006.png 1887w" sizes="(max-width: 730px) 100vw, 730px" /><meta itemprop="width" content="730"><meta itemprop="height" content="371"></span></noscript></p>
  438. <p>Элемент с названием файла, которое вы ввели на предыдущем шаге, появится в библиотеке (разделе) справа. Подробнее о макросах в программе читайте по <a href="https://sprint-layout.ru/instruktsii/sozdanie-makrosov/">ссылке</a>.</p>
  439. <blockquote class="info"><p>В интернете полно курсов и уроков Sprint-Layout, которые научат начинающего радиолюбителя обращаться с программой, освоить её инструментарий.</p></blockquote>
  440. <h2 id="problemy">Проблемы</h2>
  441. <p>При попытке открыть файл через Sprint-Layout часто появляется ошибка «ist keine sprint layout datei». Решений проблемы несколько:</p>
  442. <ul>
  443. <li>Используйте англоязычную версию программы.</li>
  444. <li>Переустановите приложение – откажитесь от портативной (portable) версии.</li>
  445. <li>Исключите кириллические символы из пути к файлу: переместите в корень диска, назовите английскими буквами сам объект и каталоги, которые к нему ведут.</li>
  446. </ul>
  447. <p><span itemprop="image" itemscope itemtype="https://schema.org/ImageObject"><img itemprop="url image" loading="lazy" decoding="async" class="lazy lazy-hidden aligncenter size-large wp-image-12" src="//sprint-layout.ru/wp-content/plugins/a3-lazy-load/assets/images/lazy_placeholder.gif" data-lazy-type="image" data-src="https://sprint-layout.ru/wp-content/uploads/2022/04/image007-730x400.png" alt="ist keine sprint layout datei" width="730" height="400" srcset="" data-srcset="https://sprint-layout.ru/wp-content/uploads/2022/04/image007-730x400.png 730w, https://sprint-layout.ru/wp-content/uploads/2022/04/image007-300x165.png 300w, https://sprint-layout.ru/wp-content/uploads/2022/04/image007-768x421.png 768w, https://sprint-layout.ru/wp-content/uploads/2022/04/image007.png 1426w" sizes="(max-width: 730px) 100vw, 730px" /><meta itemprop="width" content="730"><meta itemprop="height" content="400"></span><noscript><span itemprop="image" itemscope itemtype="https://schema.org/ImageObject"><img itemprop="url image" loading="lazy" decoding="async" class="aligncenter size-large wp-image-12" src="https://sprint-layout.ru/wp-content/uploads/2022/04/image007-730x400.png" alt="ist keine sprint layout datei" width="730" height="400" srcset="https://sprint-layout.ru/wp-content/uploads/2022/04/image007-730x400.png 730w, https://sprint-layout.ru/wp-content/uploads/2022/04/image007-300x165.png 300w, https://sprint-layout.ru/wp-content/uploads/2022/04/image007-768x421.png 768w, https://sprint-layout.ru/wp-content/uploads/2022/04/image007.png 1426w" sizes="(max-width: 730px) 100vw, 730px" /><meta itemprop="width" content="730"><meta itemprop="height" content="400"></span></noscript></p>
  448. <h2 id="preimuschestva-i-nedostatki-programmy">Преимущества и недостатки программы</h2>
  449. <p>Плюсы приложения:</p>
  450. <ul>
  451. <li>Возможность добавлять элементы в библиотеку.</li>
  452. <li>Поддержка слоев.</li>
  453. <li>Работа с несколькими платами в одном документе.</li>
  454. <li>Поиск замкнутых цепей.</li>
  455. <li>Автоматическая трассировка.</li>
  456. <li>Измерения расстояний и углов.</li>
  457. <li>Фотовид для оценки внешнего вида и паяльной маски платы.</li>
  458. <li>Применение настроек «на лету».</li>
  459. </ul>
  460. <p>Недостатки программы для печатных плат:</p>
  461. <ul>
  462. <li>Нельзя импортировать проекты с других приложений.</li>
  463. <li>Бедная библиотека.</li>
  464. <li>Не открывает несколько файлов параллельно.</li>
  465. <li>5-я версия Sprint-Layout не открывает созданные в 6-й редакции файлы.</li>
  466. <li>Нельзя добавлять обозначения элементов на собственные макросы.</li>
  467. </ul>
  468. <h2 id="analogi">Аналоги</h2>
  469. <p>В качестве альтернатив Sprint-Layout попробуйте:</p>
  470. <ul>
  471. <li>DipTrace – программа для сквозного проектирования электросхем и электронных плат в автоматическом режиме.</li>
  472. <li>Eagle – средство для рисования и автотрассировки плат с богатой библиотекой компонентов, схожим со Sprint-Layout интерфейсом. Её особенность – откат последних действий.</li>
  473. <li>ExpressPCB – бесплатный инструмент, который упростит компоновку и проектирование печатных плат.</li>
  474. <li>Fritzing – средство для автоматизации прототипирования печатных плат на Linux, Mac OS, Windows.</li>
  475. <li>TARGET 3001! – CAD-проект для инженеров-электронщиков и радиолюбителей с огромной библиотекой элементов (свыше 36 000 шт).</li>
  476. <li>TinyCAD – двухмерный редактор электронных схем с открытым исходным кодом.</li>
  477. </ul>
  478. <p>Sprint-Layout ­– виртуальный паяльник, инструмент для ручного проектирования и разводки несложных печатных плат радиолюбителями. Имеет богатую библиотеку элементов и вспомогательных функций, поддерживает формат Gerber.</p>
  479. <p><iframe class="lazy lazy-hidden" loading="lazy" title="Быстрый курс по Sprint-Layout" width="730" height="411"  data-lazy-type="iframe" data-src="https://www.youtube.com/embed/w7mJNZI959s?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe><noscript><iframe loading="lazy" title="Быстрый курс по Sprint-Layout" width="730" height="411" src="https://www.youtube.com/embed/w7mJNZI959s?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe></noscript></p><script>
  480. window.jsInputerLaunch = 15;
  481. if (typeof launchAsyncFunctionLauncher === "undefined") {
  482.    function launchAsyncFunctionLauncher() {
  483.        if (typeof asyncFunctionLauncher !== "undefined" && typeof asyncFunctionLauncher === "function") {
  484.            asyncFunctionLauncher();
  485.        } else {
  486.            setTimeout(function () {
  487.                launchAsyncFunctionLauncher();
  488.            }, 100)
  489.        }
  490.    }
  491. }
  492. launchAsyncFunctionLauncher();
  493. </script><script>
  494. var cachedBlocksArray = [];
  495. </script> </div><!-- .entry-content -->
  496.  
  497. </article>
  498.  
  499.  
  500. <div class="social-buttons"><span class="social-button social-button--vkontakte " data-social="vkontakte"></span><span class="social-button social-button--facebook " data-social="facebook"></span><span class="social-button social-button--telegram " data-social="telegram"></span><span class="social-button social-button--odnoklassniki " data-social="odnoklassniki"></span><span class="social-button social-button--twitter " data-social="twitter"></span><span class="social-button social-button--whatsapp " data-social="whatsapp"></span></div>
  501.  
  502. <meta itemprop="author" content="malostran">
  503. <meta itemscope itemprop="mainEntityOfPage" itemType="https://schema.org/WebPage" itemid="https://sprint-layout.ru/" content="Sprint-Layout &#8211; программный пакет для проектировки печатных плат">
  504. <meta itemprop="dateModified" content="2023-01-12">
  505. <meta itemprop="datePublished" content="2022-03-08T04:42:14+03:00">
  506. <div itemprop="publisher" itemscope itemtype="https://schema.org/Organization" style="display: none;"><div itemprop="logo" itemscope itemtype="https://schema.org/ImageObject"><img itemprop="url image" src="https://sprint-layout.ru/wp-content/uploads/2022/04/logo.png" alt="Sprint-Layout"></div><meta itemprop="name" content="Sprint-Layout"><meta itemprop="telephone" content="Sprint-Layout"><meta itemprop="address" content="https://sprint-layout.ru"></div>
  507.  
  508. <div id="comments" class="comments-area">
  509.  
  510.    
  511.        <div class="comments-title">Комментарии: 12</div>
  512.  
  513.        
  514.        <ol class="comment-list">
  515.            
  516. <li class="comment even thread-even depth-1" id="li-comment-2" itemprop="comment" itemscope itemtype="http://schema.org/Comment">
  517.    <div class="comment-body" id="comment-2">
  518.        <div class="comment-avatar">
  519.            <img alt='' src="//sprint-layout.ru/wp-content/plugins/a3-lazy-load/assets/images/lazy_placeholder.gif" data-lazy-type="image" data-src='https://sprint-layout.ru/wp-content/plugins/clearfy-pro/assets/images/default-avatar.png' srcset="" data-srcset='https://sprint-layout.ru/wp-content/plugins/clearfy-pro/assets/images/default-avatar.png 2x' class='lazy lazy-hidden avatar avatar-60 photo' height='60' width='60' loading='lazy' decoding='async'/><noscript><img alt='' src='https://sprint-layout.ru/wp-content/plugins/clearfy-pro/assets/images/default-avatar.png' srcset='https://sprint-layout.ru/wp-content/plugins/clearfy-pro/assets/images/default-avatar.png 2x' class='avatar avatar-60 photo' height='60' width='60' loading='lazy' decoding='async'/></noscript>        </div>
  520.        <div class="comment-meta">
  521.            <cite class="comment-author" itemprop="creator">Кирилл</cite>
  522.            
  523.                            <time class="comment-time" itemprop="datePublished" datetime="2022-04-06">
  524.                    06.04.2022                    в 07:04                </time>
  525.                    </div>
  526.  
  527.        <div class="comment-content" itemprop="text">
  528.            <p>С детства занимаюсь любительским радиомоделизмом, а сейчас ещё и подрабатываю ремонтом и сборкой радиотехники на заказ. Программа простт настоящий помощник, в ней содержатся множество инструментом для проектировария плат, можно указывать места сверления и пайки. Поддерживаются слои и прямая печать. Рекомендую всем радиолюбителям и профессионалам.</p>
  529.        </div><!-- .comment-content -->
  530.  
  531.        <div class="reply">
  532.            <span  class='comment-reply-link' data-href='#comment-2' data-commentid="2" data-postid="2" data-belowelement="comment-2" data-respondelement="respond" data-replyto="Комментарий к записи Кирилл" aria-label='Комментарий к записи Кирилл'>Ответить</span>        </div>
  533.    </div>
  534.  
  535.    <ol class="children">
  536.  
  537. <li class="comment odd alt depth-2" id="li-comment-10" itemprop="comment" itemscope itemtype="http://schema.org/Comment">
  538.    <div class="comment-body" id="comment-10">
  539.        <div class="comment-avatar">
  540.            <img alt='' src="//sprint-layout.ru/wp-content/plugins/a3-lazy-load/assets/images/lazy_placeholder.gif" data-lazy-type="image" data-src='https://sprint-layout.ru/wp-content/plugins/clearfy-pro/assets/images/default-avatar.png' srcset="" data-srcset='https://sprint-layout.ru/wp-content/plugins/clearfy-pro/assets/images/default-avatar.png 2x' class='lazy lazy-hidden avatar avatar-60 photo' height='60' width='60' loading='lazy' decoding='async'/><noscript><img alt='' src='https://sprint-layout.ru/wp-content/plugins/clearfy-pro/assets/images/default-avatar.png' srcset='https://sprint-layout.ru/wp-content/plugins/clearfy-pro/assets/images/default-avatar.png 2x' class='avatar avatar-60 photo' height='60' width='60' loading='lazy' decoding='async'/></noscript>        </div>
  541.        <div class="comment-meta">
  542.            <cite class="comment-author" itemprop="creator">Анастасия</cite>
  543.            
  544.                            <time class="comment-time" itemprop="datePublished" datetime="2022-04-12">
  545.                    12.04.2022                    в 13:01                </time>
  546.                    </div>
  547.  
  548.        <div class="comment-content" itemprop="text">
  549.            <p>сфере проектировки плат я пока новичок. Решила остановиться на программе Sprint-Layout. У программы достаточно понятный интерфейс,  позволяет быстро разобраться. Порадовала простота и понятность использования. В программе хороший функционал. Порадовало наличие функции использования шаблонов и возможность проверить работоспособность платы с помощью инструмента &#8220;проверка условий&#8221;.</p>
  550.        </div><!-- .comment-content -->
  551.  
  552.        <div class="reply">
  553.            <span  class='comment-reply-link' data-href='#comment-10' data-commentid="10" data-postid="2" data-belowelement="comment-10" data-respondelement="respond" data-replyto="Комментарий к записи Анастасия" aria-label='Комментарий к записи Анастасия'>Ответить</span>        </div>
  554.    </div>
  555.  
  556.    </li><!-- #comment-## -->
  557. </ol><!-- .children -->
  558. </li><!-- #comment-## -->
  559.  
  560. <li class="comment even thread-odd thread-alt depth-1" id="li-comment-3" itemprop="comment" itemscope itemtype="http://schema.org/Comment">
  561.    <div class="comment-body" id="comment-3">
  562.        <div class="comment-avatar">
  563.            <img alt='' src="//sprint-layout.ru/wp-content/plugins/a3-lazy-load/assets/images/lazy_placeholder.gif" data-lazy-type="image" data-src='https://sprint-layout.ru/wp-content/plugins/clearfy-pro/assets/images/default-avatar.png' srcset="" data-srcset='https://sprint-layout.ru/wp-content/plugins/clearfy-pro/assets/images/default-avatar.png 2x' class='lazy lazy-hidden avatar avatar-60 photo' height='60' width='60' loading='lazy' decoding='async'/><noscript><img alt='' src='https://sprint-layout.ru/wp-content/plugins/clearfy-pro/assets/images/default-avatar.png' srcset='https://sprint-layout.ru/wp-content/plugins/clearfy-pro/assets/images/default-avatar.png 2x' class='avatar avatar-60 photo' height='60' width='60' loading='lazy' decoding='async'/></noscript>        </div>
  564.        <div class="comment-meta">
  565.            <cite class="comment-author" itemprop="creator">Игорь</cite>
  566.            
  567.                            <time class="comment-time" itemprop="datePublished" datetime="2022-04-06">
  568.                    06.04.2022                    в 11:57                </time>
  569.                    </div>
  570.  
  571.        <div class="comment-content" itemprop="text">
  572.            <p>Для проектировщика плат, программа Sprint-Layout станет находкой, такой простоты в пользовании и легкости в целом я ни разу не находил. Всю основную работу по проектированию можно сделать в этой проге. Разобрался без особых проблем, поэтому мнение у меня сложилось исключительно положительное. Рекомендую Sprint-Layout смело и уверенно, одна из лучших.</p>
  573.        </div><!-- .comment-content -->
  574.  
  575.        <div class="reply">
  576.            <span  class='comment-reply-link' data-href='#comment-3' data-commentid="3" data-postid="2" data-belowelement="comment-3" data-respondelement="respond" data-replyto="Комментарий к записи Игорь" aria-label='Комментарий к записи Игорь'>Ответить</span>        </div>
  577.    </div>
  578.  
  579.    </li><!-- #comment-## -->
  580.  
  581. <li class="comment odd alt thread-even depth-1" id="li-comment-4" itemprop="comment" itemscope itemtype="http://schema.org/Comment">
  582.    <div class="comment-body" id="comment-4">
  583.        <div class="comment-avatar">
  584.            <img alt='' src="//sprint-layout.ru/wp-content/plugins/a3-lazy-load/assets/images/lazy_placeholder.gif" data-lazy-type="image" data-src='https://sprint-layout.ru/wp-content/plugins/clearfy-pro/assets/images/default-avatar.png' srcset="" data-srcset='https://sprint-layout.ru/wp-content/plugins/clearfy-pro/assets/images/default-avatar.png 2x' class='lazy lazy-hidden avatar avatar-60 photo' height='60' width='60' loading='lazy' decoding='async'/><noscript><img alt='' src='https://sprint-layout.ru/wp-content/plugins/clearfy-pro/assets/images/default-avatar.png' srcset='https://sprint-layout.ru/wp-content/plugins/clearfy-pro/assets/images/default-avatar.png 2x' class='avatar avatar-60 photo' height='60' width='60' loading='lazy' decoding='async'/></noscript>        </div>
  585.        <div class="comment-meta">
  586.            <cite class="comment-author" itemprop="creator">Егор</cite>
  587.            
  588.                            <time class="comment-time" itemprop="datePublished" datetime="2022-04-07">
  589.                    07.04.2022                    в 06:58                </time>
  590.                    </div>
  591.  
  592.        <div class="comment-content" itemprop="text">
  593.            <p>Я недавно стал использовать программу Sprint-Layout, идеальное решение для работы с платами, использовать удобно, все сделано основательно хорошо в этой проге, разобрался, что к чему быстро. От себя смело могу рекомендовать данную программу к пользованию, функционал, лично меня полностью устраивает, весьма обилен и проектирование плат проходит отлично.</p>
  594.        </div><!-- .comment-content -->
  595.  
  596.        <div class="reply">
  597.            <span  class='comment-reply-link' data-href='#comment-4' data-commentid="4" data-postid="2" data-belowelement="comment-4" data-respondelement="respond" data-replyto="Комментарий к записи Егор" aria-label='Комментарий к записи Егор'>Ответить</span>        </div>
  598.    </div>
  599.  
  600.    </li><!-- #comment-## -->
  601.  
  602. <li class="comment even thread-odd thread-alt depth-1" id="li-comment-5" itemprop="comment" itemscope itemtype="http://schema.org/Comment">
  603.    <div class="comment-body" id="comment-5">
  604.        <div class="comment-avatar">
  605.            <img alt='' src="//sprint-layout.ru/wp-content/plugins/a3-lazy-load/assets/images/lazy_placeholder.gif" data-lazy-type="image" data-src='https://sprint-layout.ru/wp-content/plugins/clearfy-pro/assets/images/default-avatar.png' srcset="" data-srcset='https://sprint-layout.ru/wp-content/plugins/clearfy-pro/assets/images/default-avatar.png 2x' class='lazy lazy-hidden avatar avatar-60 photo' height='60' width='60' loading='lazy' decoding='async'/><noscript><img alt='' src='https://sprint-layout.ru/wp-content/plugins/clearfy-pro/assets/images/default-avatar.png' srcset='https://sprint-layout.ru/wp-content/plugins/clearfy-pro/assets/images/default-avatar.png 2x' class='avatar avatar-60 photo' height='60' width='60' loading='lazy' decoding='async'/></noscript>        </div>
  606.        <div class="comment-meta">
  607.            <cite class="comment-author" itemprop="creator">Руслан</cite>
  608.            
  609.                            <time class="comment-time" itemprop="datePublished" datetime="2022-04-08">
  610.                    08.04.2022                    в 07:15                </time>
  611.                    </div>
  612.  
  613.        <div class="comment-content" itemprop="text">
  614.            <p>Чем хороша эта прога, что она дает тебе возможность работать сразу с несколькими слоями платы – с маркировкой и проводниками. А еще она может спокойно различать дорожки с картинки, что конечно тоже является дополнительным плюсом. Отмечу, что программа имеет простой удобный интерфейс, который включает в себя только все самые необходимые для работы инструменты.</p>
  615.        </div><!-- .comment-content -->
  616.  
  617.        <div class="reply">
  618.            <span  class='comment-reply-link' data-href='#comment-5' data-commentid="5" data-postid="2" data-belowelement="comment-5" data-respondelement="respond" data-replyto="Комментарий к записи Руслан" aria-label='Комментарий к записи Руслан'>Ответить</span>        </div>
  619.    </div>
  620.  
  621.    </li><!-- #comment-## -->
  622.  
  623. <li class="comment odd alt thread-even depth-1" id="li-comment-8" itemprop="comment" itemscope itemtype="http://schema.org/Comment">
  624.    <div class="comment-body" id="comment-8">
  625.        <div class="comment-avatar">
  626.            <img alt='' src="//sprint-layout.ru/wp-content/plugins/a3-lazy-load/assets/images/lazy_placeholder.gif" data-lazy-type="image" data-src='https://sprint-layout.ru/wp-content/plugins/clearfy-pro/assets/images/default-avatar.png' srcset="" data-srcset='https://sprint-layout.ru/wp-content/plugins/clearfy-pro/assets/images/default-avatar.png 2x' class='lazy lazy-hidden avatar avatar-60 photo' height='60' width='60' loading='lazy' decoding='async'/><noscript><img alt='' src='https://sprint-layout.ru/wp-content/plugins/clearfy-pro/assets/images/default-avatar.png' srcset='https://sprint-layout.ru/wp-content/plugins/clearfy-pro/assets/images/default-avatar.png 2x' class='avatar avatar-60 photo' height='60' width='60' loading='lazy' decoding='async'/></noscript>        </div>
  627.        <div class="comment-meta">
  628.            <cite class="comment-author" itemprop="creator">Максим</cite>
  629.            
  630.                            <time class="comment-time" itemprop="datePublished" datetime="2022-04-11">
  631.                    11.04.2022                    в 07:39                </time>
  632.                    </div>
  633.  
  634.        <div class="comment-content" itemprop="text">
  635.            <p>С давних пор я увлекаюсь радиомоделизмом, программа упрощает весь процесс, отличная находка для тех кто делает платы на заказ или просто увлекается</p>
  636.        </div><!-- .comment-content -->
  637.  
  638.        <div class="reply">
  639.            <span  class='comment-reply-link' data-href='#comment-8' data-commentid="8" data-postid="2" data-belowelement="comment-8" data-respondelement="respond" data-replyto="Комментарий к записи Максим" aria-label='Комментарий к записи Максим'>Ответить</span>        </div>
  640.    </div>
  641.  
  642.    </li><!-- #comment-## -->
  643.  
  644. <li class="comment even thread-odd thread-alt depth-1" id="li-comment-9" itemprop="comment" itemscope itemtype="http://schema.org/Comment">
  645.    <div class="comment-body" id="comment-9">
  646.        <div class="comment-avatar">
  647.            <img alt='' src="//sprint-layout.ru/wp-content/plugins/a3-lazy-load/assets/images/lazy_placeholder.gif" data-lazy-type="image" data-src='https://sprint-layout.ru/wp-content/plugins/clearfy-pro/assets/images/default-avatar.png' srcset="" data-srcset='https://sprint-layout.ru/wp-content/plugins/clearfy-pro/assets/images/default-avatar.png 2x' class='lazy lazy-hidden avatar avatar-60 photo' height='60' width='60' loading='lazy' decoding='async'/><noscript><img alt='' src='https://sprint-layout.ru/wp-content/plugins/clearfy-pro/assets/images/default-avatar.png' srcset='https://sprint-layout.ru/wp-content/plugins/clearfy-pro/assets/images/default-avatar.png 2x' class='avatar avatar-60 photo' height='60' width='60' loading='lazy' decoding='async'/></noscript>        </div>
  648.        <div class="comment-meta">
  649.            <cite class="comment-author" itemprop="creator">Оксана</cite>
  650.            
  651.                            <time class="comment-time" itemprop="datePublished" datetime="2022-04-11">
  652.                    11.04.2022                    в 10:02                </time>
  653.                    </div>
  654.  
  655.        <div class="comment-content" itemprop="text">
  656.            <p>Я в данной области новичок. Долго искала хорошую программу для работы. Программа Sprint-Layout стала просто настоящим открытием и спасением для меня. Отлично подойдёт для людей, работающих с платами. Максимальна проста в использовании и понимании. В ней можно сделать почти всю работу. Очень рекомендую Sprint-Layout. Лучшее, что я находила в этой области</p>
  657.        </div><!-- .comment-content -->
  658.  
  659.        <div class="reply">
  660.            <span  class='comment-reply-link' data-href='#comment-9' data-commentid="9" data-postid="2" data-belowelement="comment-9" data-respondelement="respond" data-replyto="Комментарий к записи Оксана" aria-label='Комментарий к записи Оксана'>Ответить</span>        </div>
  661.    </div>
  662.  
  663.    </li><!-- #comment-## -->
  664.  
  665. <li class="comment odd alt thread-even depth-1" id="li-comment-11" itemprop="comment" itemscope itemtype="http://schema.org/Comment">
  666.    <div class="comment-body" id="comment-11">
  667.        <div class="comment-avatar">
  668.            <img alt='' src="//sprint-layout.ru/wp-content/plugins/a3-lazy-load/assets/images/lazy_placeholder.gif" data-lazy-type="image" data-src='https://sprint-layout.ru/wp-content/plugins/clearfy-pro/assets/images/default-avatar.png' srcset="" data-srcset='https://sprint-layout.ru/wp-content/plugins/clearfy-pro/assets/images/default-avatar.png 2x' class='lazy lazy-hidden avatar avatar-60 photo' height='60' width='60' loading='lazy' decoding='async'/><noscript><img alt='' src='https://sprint-layout.ru/wp-content/plugins/clearfy-pro/assets/images/default-avatar.png' srcset='https://sprint-layout.ru/wp-content/plugins/clearfy-pro/assets/images/default-avatar.png 2x' class='avatar avatar-60 photo' height='60' width='60' loading='lazy' decoding='async'/></noscript>        </div>
  669.        <div class="comment-meta">
  670.            <cite class="comment-author" itemprop="creator">СВЕТЛАНА</cite>
  671.            
  672.                            <time class="comment-time" itemprop="datePublished" datetime="2022-04-13">
  673.                    13.04.2022                    в 14:34                </time>
  674.                    </div>
  675.  
  676.        <div class="comment-content" itemprop="text">
  677.            <p>Попробовав множество различных высококлассных инструментов для печатных плат, я обнаружила, что Sprint-Layout имеет лучший рабочий процесс и хорошо продуманные функции из всех них. Это простые вещи, которые делают Sprint-Layout намного проще в использовании и делают создание печатных плат очень быстрым. Я отправила почти сотню различных плат для изготовления из SL со 100% успехом (если не считать моих собственных ошибок при проектировании).</p>
  678.        </div><!-- .comment-content -->
  679.  
  680.        <div class="reply">
  681.            <span  class='comment-reply-link' data-href='#comment-11' data-commentid="11" data-postid="2" data-belowelement="comment-11" data-respondelement="respond" data-replyto="Комментарий к записи СВЕТЛАНА" aria-label='Комментарий к записи СВЕТЛАНА'>Ответить</span>        </div>
  682.    </div>
  683.  
  684.    </li><!-- #comment-## -->
  685.  
  686. <li class="comment even thread-odd thread-alt depth-1" id="li-comment-13" itemprop="comment" itemscope itemtype="http://schema.org/Comment">
  687.    <div class="comment-body" id="comment-13">
  688.        <div class="comment-avatar">
  689.            <img alt='' src="//sprint-layout.ru/wp-content/plugins/a3-lazy-load/assets/images/lazy_placeholder.gif" data-lazy-type="image" data-src='https://sprint-layout.ru/wp-content/plugins/clearfy-pro/assets/images/default-avatar.png' srcset="" data-srcset='https://sprint-layout.ru/wp-content/plugins/clearfy-pro/assets/images/default-avatar.png 2x' class='lazy lazy-hidden avatar avatar-60 photo' height='60' width='60' loading='lazy' decoding='async'/><noscript><img alt='' src='https://sprint-layout.ru/wp-content/plugins/clearfy-pro/assets/images/default-avatar.png' srcset='https://sprint-layout.ru/wp-content/plugins/clearfy-pro/assets/images/default-avatar.png 2x' class='avatar avatar-60 photo' height='60' width='60' loading='lazy' decoding='async'/></noscript>        </div>
  690.        <div class="comment-meta">
  691.            <cite class="comment-author" itemprop="creator">Генадий</cite>
  692.            
  693.                            <time class="comment-time" itemprop="datePublished" datetime="2022-04-14">
  694.                    14.04.2022                    в 15:54                </time>
  695.                    </div>
  696.  
  697.        <div class="comment-content" itemprop="text">
  698.            <p>Программа достаточно полезная для работы . Благо системные требования не слишком высокие, так что пошло и на моём древнем компьютере. Интерфейс в целом интуитивно понятен, каких либо вопросов не возникало, а если и возникали, то ответы на них легко можно найти в интернете. Больше всего порадовала поддержка слоёв, это сильно упрощает работу. Автоматическая трассировка так же помогает экономить время.</p>
  699.        </div><!-- .comment-content -->
  700.  
  701.        <div class="reply">
  702.            <span  class='comment-reply-link' data-href='#comment-13' data-commentid="13" data-postid="2" data-belowelement="comment-13" data-respondelement="respond" data-replyto="Комментарий к записи Генадий" aria-label='Комментарий к записи Генадий'>Ответить</span>        </div>
  703.    </div>
  704.  
  705.    </li><!-- #comment-## -->
  706.  
  707. <li class="comment odd alt thread-even depth-1" id="li-comment-33" itemprop="comment" itemscope itemtype="http://schema.org/Comment">
  708.    <div class="comment-body" id="comment-33">
  709.        <div class="comment-avatar">
  710.            <img alt='' src="//sprint-layout.ru/wp-content/plugins/a3-lazy-load/assets/images/lazy_placeholder.gif" data-lazy-type="image" data-src='https://sprint-layout.ru/wp-content/plugins/clearfy-pro/assets/images/default-avatar.png' srcset="" data-srcset='https://sprint-layout.ru/wp-content/plugins/clearfy-pro/assets/images/default-avatar.png 2x' class='lazy lazy-hidden avatar avatar-60 photo' height='60' width='60' loading='lazy' decoding='async'/><noscript><img alt='' src='https://sprint-layout.ru/wp-content/plugins/clearfy-pro/assets/images/default-avatar.png' srcset='https://sprint-layout.ru/wp-content/plugins/clearfy-pro/assets/images/default-avatar.png 2x' class='avatar avatar-60 photo' height='60' width='60' loading='lazy' decoding='async'/></noscript>        </div>
  711.        <div class="comment-meta">
  712.            <cite class="comment-author" itemprop="creator">Martin</cite>
  713.            
  714.                            <time class="comment-time" itemprop="datePublished" datetime="2022-05-24">
  715.                    24.05.2022                    в 20:18                </time>
  716.                    </div>
  717.  
  718.        <div class="comment-content" itemprop="text">
  719.            <p>Не выводит на печать два слоя двухсторонней платы. В оригинале, такая возможность есть.</p>
  720.        </div><!-- .comment-content -->
  721.  
  722.        <div class="reply">
  723.            <span  class='comment-reply-link' data-href='#comment-33' data-commentid="33" data-postid="2" data-belowelement="comment-33" data-respondelement="respond" data-replyto="Комментарий к записи Martin" aria-label='Комментарий к записи Martin'>Ответить</span>        </div>
  724.    </div>
  725.  
  726.    </li><!-- #comment-## -->
  727.  
  728. <li class="comment even thread-odd thread-alt depth-1" id="li-comment-707" itemprop="comment" itemscope itemtype="http://schema.org/Comment">
  729.    <div class="comment-body" id="comment-707">
  730.        <div class="comment-avatar">
  731.            <img alt='' src="//sprint-layout.ru/wp-content/plugins/a3-lazy-load/assets/images/lazy_placeholder.gif" data-lazy-type="image" data-src='https://sprint-layout.ru/wp-content/plugins/clearfy-pro/assets/images/default-avatar.png' srcset="" data-srcset='https://sprint-layout.ru/wp-content/plugins/clearfy-pro/assets/images/default-avatar.png 2x' class='lazy lazy-hidden avatar avatar-60 photo' height='60' width='60' loading='lazy' decoding='async'/><noscript><img alt='' src='https://sprint-layout.ru/wp-content/plugins/clearfy-pro/assets/images/default-avatar.png' srcset='https://sprint-layout.ru/wp-content/plugins/clearfy-pro/assets/images/default-avatar.png 2x' class='avatar avatar-60 photo' height='60' width='60' loading='lazy' decoding='async'/></noscript>        </div>
  732.        <div class="comment-meta">
  733.            <cite class="comment-author" itemprop="creator">ОТля</cite>
  734.            
  735.                            <time class="comment-time" itemprop="datePublished" datetime="2022-09-21">
  736.                    21.09.2022                    в 02:42                </time>
  737.                    </div>
  738.  
  739.        <div class="comment-content" itemprop="text">
  740.            <p>ребята подскажите почему иероглифы заместь букв?</p>
  741.        </div><!-- .comment-content -->
  742.  
  743.        <div class="reply">
  744.            <span  class='comment-reply-link' data-href='#comment-707' data-commentid="707" data-postid="2" data-belowelement="comment-707" data-respondelement="respond" data-replyto="Комментарий к записи ОТля" aria-label='Комментарий к записи ОТля'>Ответить</span>        </div>
  745.    </div>
  746.  
  747.    </li><!-- #comment-## -->
  748.  
  749. <li class="comment odd alt thread-even depth-1" id="li-comment-949" itemprop="comment" itemscope itemtype="http://schema.org/Comment">
  750.    <div class="comment-body" id="comment-949">
  751.        <div class="comment-avatar">
  752.            <img alt='' src="//sprint-layout.ru/wp-content/plugins/a3-lazy-load/assets/images/lazy_placeholder.gif" data-lazy-type="image" data-src='https://sprint-layout.ru/wp-content/plugins/clearfy-pro/assets/images/default-avatar.png' srcset="" data-srcset='https://sprint-layout.ru/wp-content/plugins/clearfy-pro/assets/images/default-avatar.png 2x' class='lazy lazy-hidden avatar avatar-60 photo' height='60' width='60' loading='lazy' decoding='async'/><noscript><img alt='' src='https://sprint-layout.ru/wp-content/plugins/clearfy-pro/assets/images/default-avatar.png' srcset='https://sprint-layout.ru/wp-content/plugins/clearfy-pro/assets/images/default-avatar.png 2x' class='avatar avatar-60 photo' height='60' width='60' loading='lazy' decoding='async'/></noscript>        </div>
  753.        <div class="comment-meta">
  754.            <cite class="comment-author" itemprop="creator">Евгений</cite>
  755.            
  756.                            <time class="comment-time" itemprop="datePublished" datetime="2023-03-13">
  757.                    13.03.2023                    в 11:49                </time>
  758.                    </div>
  759.  
  760.        <div class="comment-content" itemprop="text">
  761.            <p>Плагин sprintFont_v1.5.2 приятно дополняет функции Sprint-Layout,<br />
  762. это и плавные кривые и надписи любым шрифтом и добавление элементов.<br />
  763. Не хватает функции для создания  НЕ круглых отверстий методом фрезеровки.</p>
  764.        </div><!-- .comment-content -->
  765.  
  766.        <div class="reply">
  767.            <span  class='comment-reply-link' data-href='#comment-949' data-commentid="949" data-postid="2" data-belowelement="comment-949" data-respondelement="respond" data-replyto="Комментарий к записи Евгений" aria-label='Комментарий к записи Евгений'>Ответить</span>        </div>
  768.    </div>
  769.  
  770.    </li><!-- #comment-## -->
  771.        </ol><!-- .comment-list -->
  772.  
  773.         <div id="respond" class="comment-respond">
  774. <div id="reply-title" class="comment-reply-title">Добавить комментарии <small><a rel="nofollow" id="cancel-comment-reply-link" href="/#respond" style="display:none;">Отменить ответ</a></small></div><form action="https://sprint-layout.ru/wp-comments-post.php" method="post" id="commentform" class="comment-form" novalidate><p class="comment-form-author"><label class="screen-reader-text" for="author">Имя <span class="required">*</span></label> <input id="author" name="author" type="text" value="" size="30" maxlength="245"  required='required' placeholder="Имя" /></p>
  775. <p class="comment-form-email"><label class="screen-reader-text" for="email">Email <span class="required">*</span></label> <input id="email" name="email" type="email" value="" size="30" maxlength="100"  required='required' placeholder="Email" /></p>
  776. <p class="comment-form-comment"><label class="screen-reader-text" for="comment">Комментарий</label> <textarea id="comment" name="comment" cols="45" rows="8" maxlength="65525" required="required" placeholder="Комментарий" ></textarea></p><div class="comment-notes-after">Нажимая на кнопку "Отправить комментарий", я и принимаю <a href="https://sprint-layout.ru/privacy-policy/" target="_blank">политику конфиденциальности</a>.</div><p class="comment-form-cookies-consent"><input id="wp-comment-cookies-consent" name="wp-comment-cookies-consent" type="checkbox" value="yes" /> <label for="wp-comment-cookies-consent">Сохранить моё имя, email и адрес сайта в этом браузере для последующих моих комментариев.</label></p>
  777. <p class="form-submit"><input name="submit" type="submit" id="submit" class="submit" value="Отправить комментарий" /> <input type='hidden' name='comment_post_ID' value='2' id='comment_post_ID' />
  778. <input type='hidden' name='comment_parent' id='comment_parent' value='0' />
  779. </p><p style="display: none;"><input type="hidden" id="akismet_comment_nonce" name="akismet_comment_nonce" value="12b2d21a1a" /></p><p style="display: none !important;"><label>&#916;<textarea name="ak_hp_textarea" cols="45" rows="8" maxlength="100"></textarea></label><input type="hidden" id="ak_js_1" name="ak_js" value="178"/><script>document.getElementById( "ak_js_1" ).setAttribute( "value", ( new Date() ).getTime() );</script></p></form> </div><!-- #respond -->
  780. </div><!-- #comments -->
  781.  
  782.  
  783.  
  784.        </main><!-- #main -->
  785.    </div><!-- #primary -->
  786.  
  787.    
  788. <aside id="secondary" class="widget-area" itemscope itemtype="http://schema.org/WPSideBar">
  789.  
  790. <div id="custom_html-2" class="widget_text widget widget_custom_html"><div class="widget-header">Sprint-Layout</div><div class="textwidget custom-html-widget"><strong>Разработчик:</strong> Abacom<br/>
  791. <strong>Тип лицензии:</strong> Платная (49,9EUR)<br/>
  792. <strong>Текущая версия:</strong> 6.0 (5)<br/>
  793. <strong>Обновлено:</strong> 05.04.2022<br/>
  794. <strong>Размер:</strong> 8.7Mb<br/>
  795. <strong>Формат:</strong> .exe (rar) <br/>
  796. <strong>Операционная система:</strong> Windows 10, 8.1, 8, 7, Vista, XP<br/>
  797. <strong>Язык:</strong> Русский<br/>
  798. <strong>Категория:</strong> Проектировка печатных плат</div></div><div id="custom_html-3" class="widget_text widget widget_custom_html"><div class="textwidget custom-html-widget"><p style="text-align: center;margin-bottom: 20px !important;"><a class="btn" href="https://sprint-layout.ru/wp-content/uploads/sprint-layout_6_setup.exe"><i class="icon-arrow-up-outline" style="transform: rotate(180deg );display: inline-block;vertical-align: middle;margin-right: 8px;"></i>Скачать Sprint Layout</a></p></div></div><div id="wpshop_widget_articles-2" class="widget widget_wpshop_widget_articles"><div class="widget-header">Инструкции</div><div class="widget-articles">
  799. <article class="post-card post-card--small ">
  800.            <div class="post-card__thumbnail">
  801.            <a href="https://sprint-layout.ru/instruktsii/import-faylov-gerber/">
  802.                <div class="post-card__icon">
  803.                    <img width="100" height="100" src="//sprint-layout.ru/wp-content/plugins/a3-lazy-load/assets/images/lazy_placeholder.gif" data-lazy-type="image" data-src="https://sprint-layout.ru/wp-content/uploads/2022/04/image013-100x100.png" class="lazy lazy-hidden attachment-yelly_square size-yelly_square wp-post-image" alt="Импортировать Gerber" decoding="async" loading="lazy" srcset="" data-srcset="https://sprint-layout.ru/wp-content/uploads/2022/04/image013-100x100.png 100w, https://sprint-layout.ru/wp-content/uploads/2022/04/image013-150x150.png 150w" sizes="(max-width: 100px) 100vw, 100px" /><noscript><img width="100" height="100" src="//sprint-layout.ru/wp-content/plugins/a3-lazy-load/assets/images/lazy_placeholder.gif" data-lazy-type="image" data-src="https://sprint-layout.ru/wp-content/uploads/2022/04/image013-100x100.png" class="lazy lazy-hidden attachment-yelly_square size-yelly_square wp-post-image" alt="Импортировать Gerber" decoding="async" loading="lazy" srcset="" data-srcset="https://sprint-layout.ru/wp-content/uploads/2022/04/image013-100x100.png 100w, https://sprint-layout.ru/wp-content/uploads/2022/04/image013-150x150.png 150w" sizes="(max-width: 100px) 100vw, 100px" /><noscript><img width="100" height="100" src="https://sprint-layout.ru/wp-content/uploads/2022/04/image013-100x100.png" class="attachment-yelly_square size-yelly_square wp-post-image" alt="Импортировать Gerber" decoding="async" loading="lazy" srcset="https://sprint-layout.ru/wp-content/uploads/2022/04/image013-100x100.png 100w, https://sprint-layout.ru/wp-content/uploads/2022/04/image013-150x150.png 150w" sizes="(max-width: 100px) 100vw, 100px" /></noscript></noscript>                </div>
  804.            </a>
  805.        </div>
  806.    
  807.    <div class="post-card__body">
  808.        <div class="post-card__title"><a href="https://sprint-layout.ru/instruktsii/import-faylov-gerber/">Импорт файлов Gerber в Sprint Layout</a></div>
  809.  
  810.        
  811.                    <div class="post-card__meta">
  812.                                <span class="post-card__views">5.8k.</span>            </div>
  813.        
  814.            </div>
  815. </article>
  816. <article class="post-card post-card--small ">
  817.            <div class="post-card__thumbnail">
  818.            <a href="https://sprint-layout.ru/instruktsii/sozdanie-makrosov/">
  819.                <div class="post-card__icon">
  820.                    <img width="100" height="100" src="//sprint-layout.ru/wp-content/plugins/a3-lazy-load/assets/images/lazy_placeholder.gif" data-lazy-type="image" data-src="https://sprint-layout.ru/wp-content/uploads/2022/04/image009-100x100.png" class="lazy lazy-hidden attachment-yelly_square size-yelly_square wp-post-image" alt="окно с настройками элемента" decoding="async" loading="lazy" srcset="" data-srcset="https://sprint-layout.ru/wp-content/uploads/2022/04/image009-100x100.png 100w, https://sprint-layout.ru/wp-content/uploads/2022/04/image009-150x150.png 150w" sizes="(max-width: 100px) 100vw, 100px" /><noscript><img width="100" height="100" src="//sprint-layout.ru/wp-content/plugins/a3-lazy-load/assets/images/lazy_placeholder.gif" data-lazy-type="image" data-src="https://sprint-layout.ru/wp-content/uploads/2022/04/image009-100x100.png" class="lazy lazy-hidden attachment-yelly_square size-yelly_square wp-post-image" alt="окно с настройками элемента" decoding="async" loading="lazy" srcset="" data-srcset="https://sprint-layout.ru/wp-content/uploads/2022/04/image009-100x100.png 100w, https://sprint-layout.ru/wp-content/uploads/2022/04/image009-150x150.png 150w" sizes="(max-width: 100px) 100vw, 100px" /><noscript><img width="100" height="100" src="https://sprint-layout.ru/wp-content/uploads/2022/04/image009-100x100.png" class="attachment-yelly_square size-yelly_square wp-post-image" alt="окно с настройками элемента" decoding="async" loading="lazy" srcset="https://sprint-layout.ru/wp-content/uploads/2022/04/image009-100x100.png 100w, https://sprint-layout.ru/wp-content/uploads/2022/04/image009-150x150.png 150w" sizes="(max-width: 100px) 100vw, 100px" /></noscript></noscript>                </div>
  821.            </a>
  822.        </div>
  823.    
  824.    <div class="post-card__body">
  825.        <div class="post-card__title"><a href="https://sprint-layout.ru/instruktsii/sozdanie-makrosov/">Создание макросов в Sprint Layout</a></div>
  826.  
  827.        
  828.                    <div class="post-card__meta">
  829.                                <span class="post-card__views">6.1k.</span>            </div>
  830.        
  831.            </div>
  832. </article>
  833. <article class="post-card post-card--small ">
  834.            <div class="post-card__thumbnail">
  835.            <a href="https://sprint-layout.ru/instruktsii/trassirovka-platy/">
  836.                <div class="post-card__icon">
  837.                    <img width="100" height="100" src="//sprint-layout.ru/wp-content/plugins/a3-lazy-load/assets/images/lazy_placeholder.gif" data-lazy-type="image" data-src="https://sprint-layout.ru/wp-content/uploads/2022/04/image008-100x100.png" class="lazy lazy-hidden attachment-yelly_square size-yelly_square wp-post-image" alt="Связи" decoding="async" loading="lazy" srcset="" data-srcset="https://sprint-layout.ru/wp-content/uploads/2022/04/image008-100x100.png 100w, https://sprint-layout.ru/wp-content/uploads/2022/04/image008-150x150.png 150w" sizes="(max-width: 100px) 100vw, 100px" /><noscript><img width="100" height="100" src="//sprint-layout.ru/wp-content/plugins/a3-lazy-load/assets/images/lazy_placeholder.gif" data-lazy-type="image" data-src="https://sprint-layout.ru/wp-content/uploads/2022/04/image008-100x100.png" class="lazy lazy-hidden attachment-yelly_square size-yelly_square wp-post-image" alt="Связи" decoding="async" loading="lazy" srcset="" data-srcset="https://sprint-layout.ru/wp-content/uploads/2022/04/image008-100x100.png 100w, https://sprint-layout.ru/wp-content/uploads/2022/04/image008-150x150.png 150w" sizes="(max-width: 100px) 100vw, 100px" /><noscript><img width="100" height="100" src="https://sprint-layout.ru/wp-content/uploads/2022/04/image008-100x100.png" class="attachment-yelly_square size-yelly_square wp-post-image" alt="Связи" decoding="async" loading="lazy" srcset="https://sprint-layout.ru/wp-content/uploads/2022/04/image008-100x100.png 100w, https://sprint-layout.ru/wp-content/uploads/2022/04/image008-150x150.png 150w" sizes="(max-width: 100px) 100vw, 100px" /></noscript></noscript>                </div>
  838.            </a>
  839.        </div>
  840.    
  841.    <div class="post-card__body">
  842.        <div class="post-card__title"><a href="https://sprint-layout.ru/instruktsii/trassirovka-platy/">Трассировка платы в Sprint-Layout</a></div>
  843.  
  844.        
  845.                    <div class="post-card__meta">
  846.                                <span class="post-card__views">4.6k.</span>            </div>
  847.        
  848.            </div>
  849. </article></div></div>
  850. </aside><!-- #secondary -->
  851.  
  852.    
  853.  
  854.    </div><!--.site-content-inner-->
  855.  
  856.    
  857. </div><!--.site-content-->
  858.  
  859.    
  860.    
  861.  
  862. <div class="site-footer-container">
  863.  
  864.    
  865.  
  866.    <div class="footer-navigation fixed" itemscope itemtype="http://schema.org/SiteNavigationElement">
  867.        <div class="main-navigation-inner fixed">
  868.            <div class="menu-menyu-v-futere-container"><ul id="footer_menu" class="menu"><li id="menu-item-51" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-51"><a href="https://sprint-layout.ru/o-sayte/">О сайте</a></li>
  869. <li id="menu-item-50" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-50"><a href="https://sprint-layout.ru/kontakty/">Контакты</a></li>
  870. <li id="menu-item-52" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-privacy-policy menu-item-52"><a rel="privacy-policy" href="https://sprint-layout.ru/privacy-policy/">Политика конфиденциальности</a></li>
  871. </ul></div>        </div>
  872.    </div><!--footer-navigation-->
  873.  
  874.  
  875.    <footer id="colophon" class="site-footer full" itemscope itemtype="http://schema.org/WPFooter">
  876.        <div class="site-footer-inner fixed">
  877.  
  878.            
  879.            
  880. <div class="footer-bottom">
  881.    <div class="footer-info">
  882.        <div class="footer-copyright">© 2022-2024 Не является официальным сайтом. Все товарные знаки принадлежат их владельцам.</div>
  883.        <div class="footer-under-copyright"></div>
  884.        </div>
  885.  
  886.    </div>
  887.        </div>
  888.    </footer><!--.site-footer-->
  889. </div>
  890.  
  891.  
  892.            <button type="button" class="scrolltop js-scrolltop"></button>
  893.    
  894.    
  895. </div><!-- #page -->
  896.  
  897. <script>var pseudo_links = document.querySelectorAll(".pseudo-clearfy-link");for (var i=0;i<pseudo_links.length;i++ ) { pseudo_links[i].addEventListener("click", function(e){   window.open( e.target.getAttribute("data-uri") ); }); }</script><script>
  898. if (typeof rb_ajaxurl==='undefined') {var rb_ajaxurl = 'https://sprint-layout.ru/wp-admin/admin-ajax.php';}
  899. if (typeof gather_content==='undefined') {var gather_content = true;}
  900. if (typeof endedSc==='undefined') {var endedSc = false;}
  901. if (typeof endedCc==='undefined') {var endedCc = false;}
  902. if (typeof usedAdBlocksArray==='undefined') {var usedAdBlocksArray = [];}
  903. if (typeof usedBlockSettingArrayIds==='undefined') {var usedBlockSettingArrayIds = [];}
  904. if (typeof sameElementAfterWidth==='undefined') {var sameElementAfterWidth = false;}
  905. if (typeof sameElementAfterExcClassId==='undefined') {var sameElementAfterExcClassId = false;}
  906. if (typeof sameElementAfterFromConstruction==='undefined') {var sameElementAfterFromConstruction = false;}
  907. if (typeof rb_tempElement_check==='undefined') {var rb_tempElement_check = false;}
  908. if (typeof rb_tempElement==='undefined') {var rb_tempElement = null;}
  909. if (typeof window.jsInputerLaunch==='undefined') {window.jsInputerLaunch = -1;}
  910.  
  911. function launchUpdateRbDisplays() {
  912.    if ((typeof updateRbDisplays !== 'undefined')&&(typeof updateRbDisplays === 'function')) {
  913.        updateRbDisplays();
  914.    } else {
  915.        setTimeout(function () {
  916.            launchUpdateRbDisplays();
  917.        }, 200);
  918.    }
  919. }
  920.  
  921. /* "sc" in variables - mark for shortcode variable */
  922. function shortcodesInsert() {
  923.    let gatheredBlocks = document.querySelectorAll('.percentPointerClass.scMark'),
  924.        scBlockId = -1,
  925.        scAdId = -1,
  926.        blockStatus = '',
  927.        dataFull = -1,
  928.        gatheredBlockChild,
  929.        okStates = ['done','refresh-wait','no-block','fetched'],
  930.        scContainer,
  931.        sci,
  932.        i1 = 0,
  933.        skyscraperCheck = [],
  934.        skyscraperStatus = false,
  935.        splitedSkyscraper = [],
  936.        gatheredBlockChildSkyParts = [],
  937.        stickyStatus = false,
  938.        stickyCheck = [],
  939.        stickyFixedStatus = false,
  940.        stickyFixedCheck = [],
  941.        overflowCheck = [],
  942.        overflowStatus = false,
  943.        repeatableIdentifier = "",
  944.        dataCidIdentifier = null,
  945.        divCidElement = '';
  946.  
  947.    if (typeof scArray !== 'undefined') {
  948.        if (scArray&&scArray.length > 0&&gatheredBlocks&&gatheredBlocks.length > 0&&typeof window.rulvW5gntb !== 'undefined') {
  949.            dataCidIdentifier = window.rulvW5gntb;
  950.            for (let i = 0; i < gatheredBlocks.length; i++) {
  951.                gatheredBlockChild = gatheredBlocks[i].children[0];
  952.                if (!gatheredBlockChild) {
  953.                    continue;
  954.                }
  955.                scAdId = -3;
  956.                blockStatus = null;
  957.                scContainer = null;
  958.                dataFull = -1;
  959.                skyscraperStatus = false;
  960.                splitedSkyscraper = [];
  961.                gatheredBlockChildSkyParts = [];
  962.                stickyStatus = false;
  963.                stickyCheck = [];
  964.                stickyFixedStatus = false;
  965.                stickyFixedCheck = [];
  966.                repeatableIdentifier = "";
  967.                divCidElement = null;
  968.  
  969.                scAdId = gatheredBlockChild.getAttribute('data-aid');
  970.                scBlockId = gatheredBlockChild.getAttribute('data-id');
  971.                blockStatus = gatheredBlockChild.getAttribute('data-state');
  972.                dataFull = gatheredBlockChild.getAttribute('data-full');
  973.  
  974.                if (scBlockId&&scAdId > 0) {
  975.                    sci = -1;
  976.                    for (i1 = 0; i1 < scArray.length; i1++) {
  977.                        if (scBlockId == scArray[i1]['blockId']&&scAdId == scArray[i1]['adId']) {
  978.                            sci = i1;
  979.                        }
  980.                    }
  981.  
  982.                    if (sci > -1) {
  983.                        if (blockStatus&&okStates.includes(blockStatus)) {
  984.                            if (blockStatus=='no-block') {
  985.                                gatheredBlockChild.innerHTML = '';
  986.                            } else if ((blockStatus=='fetched'&&dataFull==1)||!['no-block','fetched'].includes(blockStatus)) {
  987.                                for (let cl1 = 0; cl1 < gatheredBlocks[i].classList.length; cl1++) {
  988.                                    if (gatheredBlocks[i].classList[cl1].includes("repeatable-mark")) {
  989.                                        repeatableIdentifier = gatheredBlocks[i].classList[cl1];
  990.                                    }
  991.                                }
  992.  
  993.                                if (repeatableIdentifier) {
  994.                                    divCidElement = document.querySelectorAll(".percentPointerClass.scMark."+repeatableIdentifier+' div[data-cid="'+dataCidIdentifier+'"]');
  995.                                } else {
  996.                                    divCidElement = gatheredBlockChild.querySelectorAll('div[data-cid="'+dataCidIdentifier+'"]');
  997.                                }
  998.  
  999.                                if (divCidElement&&divCidElement.length > 0) {
  1000.                                    for (let i2 = 0; i2 < divCidElement.length; i2++) {
  1001.                                        jQuery(divCidElement[i2]).html(scArray[sci]['text']);
  1002.                                    }
  1003.                                } else {
  1004.                                    jQuery(gatheredBlockChild).html(scArray[sci]['text']);
  1005.                                }
  1006.                                launchUpdateRbDisplays();
  1007.                            }
  1008.                            if (blockStatus!='fetched'||(blockStatus=='fetched'&&dataFull==1)) {
  1009.                                for (i1 = 0; i1 < scArray.length; i1++) {
  1010.                                    if (scBlockId == scArray[i1]['blockId']) {
  1011.                                        scArray.splice(i1, 1);
  1012.                                        i1--;
  1013.                                    }
  1014.                                }
  1015.                                gatheredBlocks[i].classList.remove('scMark');
  1016.                            }
  1017.                        }
  1018.                    }
  1019.                } else if (scBlockId&&scAdId < 1&&['no-block','fetched'].includes(blockStatus)) {
  1020.                    for (i1 = 0; i1 < scArray.length; i1++) {
  1021.                        if (scBlockId == scArray[i1]['blockId']) {
  1022.                            scArray.splice(i1, 1);
  1023.                            i1--;
  1024.                        }
  1025.                    }
  1026.                    gatheredBlocks[i].classList.remove('scMark');
  1027.                }
  1028.            }
  1029.        } else if (!scArray||(scArray&&scArray.length < 1)) {
  1030.            endedSc = true;
  1031.        }
  1032.    } else {
  1033.        endedSc = true;
  1034.    }
  1035.  
  1036.    if (!endedSc) {
  1037.        setTimeout(function () {
  1038.            shortcodesInsert();
  1039.        }, 200);
  1040.    }
  1041. }
  1042.  
  1043. function clearUnsuitableCache(cuc_cou) {
  1044.    let scAdId = -1;
  1045.    let ccRepeat = false;
  1046.  
  1047.    let gatheredBlocks = document.querySelectorAll('.percentPointerClass .' + block_classes.join(', .percentPointerClass .'));
  1048.  
  1049.    if (gatheredBlocks&&gatheredBlocks.length > 0) {
  1050.        for (let i = 0; i < gatheredBlocks.length; i++) {
  1051.            if (gatheredBlocks[i]['dataset']['aid']&&gatheredBlocks[i]['dataset']['aid'] < 0) {
  1052.                if ((gatheredBlocks[i]['dataset']["state"]=='no-block')||(['done','fetched','refresh-wait'].includes(gatheredBlocks[i]['dataset']["state"]))) {
  1053.                    gatheredBlocks[i]['innerHTML'] = '';
  1054.                } else {
  1055.                    ccRepeat = true;
  1056.                }
  1057.            } else if (!gatheredBlocks[i]['dataset']['aid']) {
  1058.                ccRepeat = true;
  1059.            }
  1060.        }
  1061.        if (cuc_cou < 50) {
  1062.            if (ccRepeat) {
  1063.                setTimeout(function () {
  1064.                    clearUnsuitableCache(cuc_cou+1);
  1065.                }, 100);
  1066.            }
  1067.        } else {
  1068.            endedCc = true;
  1069.        }
  1070.    } else {
  1071.        endedCc = true;
  1072.    }
  1073. }
  1074.  
  1075. function blocksRepositionUse(containerString, blType, searchType, contentElement) {
  1076.    let blocksInContainer;
  1077.    let blLocal = blType;
  1078.    let currentBlock;
  1079.    let currentBlockId;
  1080.    let currentBlockPosition;
  1081.    let currentContainer;
  1082.    let i = 0;
  1083.    let j = 0;
  1084.    let blockStrJs = ' .percentPointerClass.marked';
  1085.    let blockStrPhp = ' .percentPointerClass:not(.marked)';
  1086.    let blockStr = ' .percentPointerClass';
  1087.    let checkPointer = null;
  1088.    let blockRepeatEnd = false;
  1089.  
  1090.    if (searchType) {
  1091.        if (searchType == 'marked') {
  1092.            while (!blockRepeatEnd) {
  1093.                blLocal = blLocal.parentElement;
  1094.                if (blLocal) {
  1095.                    checkPointer = blLocal.querySelector("#content_pointer_id");
  1096.                    if (!checkPointer) {
  1097.                        blocksInContainer = jQuery(blLocal).parent(containerString);
  1098.                        if (blocksInContainer && blocksInContainer.length > 0) {
  1099.                            /* checkPointer = blocksInContainer.querySelector("#content_pointer_id"); */
  1100.                            checkPointer = jQuery(blocksInContainer).find("#content_pointer_id");
  1101.                            if (checkPointer && checkPointer.length > 0) {
  1102.                                blocksInContainer = null;
  1103.                            }
  1104.                            blockRepeatEnd = true;
  1105.                        }
  1106.                    } else {
  1107.                        blockRepeatEnd = true
  1108.                    }
  1109.                } else {
  1110.                    blockRepeatEnd = true
  1111.                }
  1112.            }
  1113.            /* blocksInContainer = jQuery(blType).parent(containerString); */
  1114.            if (blocksInContainer&&blocksInContainer.length > 0) {
  1115.                /* blocksInContainer.parentNode.insertBefore(rb_tempElement, blocksInContainer); */
  1116.                blocksInContainer[0].parentNode.insertBefore(rb_tempElement, blocksInContainer[0]);
  1117.  
  1118.                sameElementAfterExcClassId = false;
  1119.                return blocksInContainer[0];
  1120.            }
  1121.            return blType;
  1122.        } else if (searchType == 'non-marked') {
  1123.            blocksInContainer = document.querySelectorAll(blType + containerString + blockStrPhp);
  1124.            if (blocksInContainer && blocksInContainer.length > 0 && usedBlockSettingArray && usedBlockSettingArray.length > 0) {
  1125.                for (i = 0; i < blocksInContainer.length; i++) {
  1126.                    currentBlock = blocksInContainer[i];
  1127.                    currentBlockId = currentBlock.querySelector('.' + block_classes.join(', .')).getAttribute('data-id');
  1128.                    currentContainer = null;
  1129.                    for (j = 0; j < usedBlockSettingArray.length; i++) {
  1130.                        if (usedBlockSettingArray[i]['id'] == currentBlockId) {
  1131.                            currentBlockPosition = usedBlockSettingArray[i]['elementPosition'];
  1132.                            currentContainer = currentBlock.closest(blType + containerString);
  1133.                            if (currentBlockPosition == 0) {
  1134.                                currentContainer.parentNode.insertBefore(currentBlock, currentContainer);
  1135.                            } else {
  1136.                                currentContainer.parentNode.insertBefore(currentBlock, currentContainer.nextSibling);
  1137.                            }
  1138.                            break;
  1139.                        }
  1140.                    }
  1141.                }
  1142.            }
  1143.        }
  1144.    }
  1145.    return false;
  1146. }
  1147.  
  1148. function createStyleElement(blockNumber, localElementCss) {
  1149.    let htmlToAdd = '';
  1150.    let marginString;
  1151.    let textAlignString;
  1152.    let contPoi;
  1153.    let emptyValues = false;
  1154.    let elementToAddStyleLocal = document.querySelector('#blocksAlignStyle');
  1155.    if (!elementToAddStyleLocal) {
  1156.        contPoi = document.querySelector('#content_pointer_id');
  1157.        if (!contPoi) {
  1158.            return false;
  1159.        }
  1160.  
  1161.        elementToAddStyleLocal = document.createElement('style');
  1162.        elementToAddStyleLocal.setAttribute('id', 'blocksAlignStyle');
  1163.        contPoi.parentNode.insertBefore(elementToAddStyleLocal, contPoi);
  1164.    }
  1165.  
  1166.    switch (localElementCss) {
  1167.        case 'left':
  1168.            emptyValues = false;
  1169.            marginString = '0 auto 0 0';
  1170.            textAlignString = 'left';
  1171.            break;
  1172.        case 'right':
  1173.            emptyValues = false;
  1174.            marginString = '0 0 0 auto';
  1175.            textAlignString = 'right';
  1176.            break;
  1177.        case 'center':
  1178.            emptyValues = false;
  1179.            marginString = '0 auto';
  1180.            textAlignString = 'center';
  1181.            break;
  1182.        case 'default':
  1183.            emptyValues = true;
  1184.            marginString = 'default';
  1185.            textAlignString = 'default';
  1186.            /** here will be css */
  1187.            break;
  1188.    }
  1189.    if (!emptyValues) {
  1190.        htmlToAdd = '.percentPointerClass  > *[data-id="'+blockNumber+'"] {\n' +
  1191.            '    margin: '+marginString+';\n' +
  1192.            '}\n';
  1193.    }
  1194.  
  1195.    elementToAddStyleLocal.innerHTML += htmlToAdd;
  1196.    return textAlignString;
  1197. }
  1198.  
  1199. function initTargetToInsert(position, type, currentElement) {
  1200.    let posCurrentElement;
  1201.    let usedElement;
  1202.    if (type == 'element') {
  1203.        if (position == 0) {
  1204.            posCurrentElement = currentElement;
  1205.            if (!(typeof obligatoryMargin!=='undefined'&&obligatoryMargin===1)) {
  1206.                currentElement.classList.add('rfwp_removedMarginTop');
  1207.            }
  1208.        } else {
  1209.            posCurrentElement = currentElement.nextSibling;
  1210.            if (!(typeof obligatoryMargin!=='undefined'&&obligatoryMargin===1)) {
  1211.                currentElement.classList.add('rfwp_removedMarginBottom');
  1212.            }
  1213.        }
  1214.        currentElement.style.clear = 'both';
  1215.    } else {
  1216.        usedElement = currentElement;
  1217.        if (position == 0) {
  1218.            posCurrentElement = usedElement;
  1219.        } else {
  1220.            posCurrentElement = usedElement.nextSibling;
  1221.        }
  1222.    }
  1223.    return posCurrentElement;
  1224. }
  1225.  
  1226. function checkAdsWidth(content_pointer, posCurrentElement, currentElement) {
  1227.    let widthChecker = document.querySelector('#widthChecker');
  1228.    let widthCheckerStyle = null;
  1229.    let content_pointerStyle = getComputedStyle(content_pointer);
  1230.    /* let getPositionForTempElement = null;
  1231.    let testImgDetected = false;
  1232.    let testImg;
  1233.    let testImageCompWidth;
  1234.    let testImgCou = 0
  1235.    let figureChilds;
  1236.    let figureComWidth;
  1237.    let fcCou = 0; */
  1238.    let content = content_pointer.parentElement;
  1239.  
  1240.    if (!widthChecker) {
  1241.        widthChecker = document.createElement("div");
  1242.        widthChecker.setAttribute('id','widthChecker');
  1243.        widthChecker.style.display = 'flex';
  1244.    }
  1245.  
  1246.    if (content) {
  1247.        posCurrentElement = initTargetToInsert(posCurrentElement, 'term', currentElement);
  1248.        currentElement.parentNode.insertBefore(widthChecker, posCurrentElement);
  1249.        widthCheckerStyle = getComputedStyle(widthChecker);
  1250.        /* testImg = currentElement.previousSibling;
  1251.        if (testImg) {
  1252.            while (!testImgDetected&&testImgCou<4) {
  1253.                if (testImg&&testImg.nodeName.toLowerCase() === 'figure') {
  1254.                    figureComWidth = getComputedStyle(testImg);
  1255.                    figureComWidth = parseInt(figureComWidth.width);
  1256.                    figureChilds = testImg.childNodes;
  1257.                    if (figureChilds&&figureChilds.length > 0) {
  1258.                        while (!testImgDetected&&figureChilds[fcCou]) {
  1259.                            if (figureChilds[fcCou] instanceof HTMLImageElement) {
  1260.                                testImgDetected = true;
  1261.                                testImageCompWidth = getComputedStyle(figureChilds[fcCou]);
  1262.                                testImageCompWidth = parseInt(testImageCompWidth.width);
  1263.                                console.log('img_f_w:'+figureComWidth+'; img_w:'+testImageCompWidth+';');
  1264.                            }
  1265.                            fcCou++;
  1266.                        }
  1267.                    }
  1268.                }
  1269.                if (testImg instanceof HTMLImageElement) {
  1270.                    testImgDetected = true;
  1271.                    testImageCompWidth = getComputedStyle(testImg);
  1272.                    testImageCompWidth = parseInt(testImageCompWidth.width);
  1273.                    console.log('img_w:'+testImageCompWidth+';');
  1274.                }
  1275.                if (!testImg.previousSibling) {
  1276.                    break;
  1277.                }
  1278.                testImg = testImg.previousSibling;
  1279.                testImgCou++;
  1280.            }
  1281.        }
  1282.        console.log('cp_w:'+parseInt(content_pointerStyle.width)+'; wc_w:'+parseInt(widthCheckerStyle.width)+';'); */
  1283.        if (parseInt(widthCheckerStyle.width) >= (parseInt(content_pointerStyle.width) - 50)) {
  1284.            return true;
  1285.        }
  1286.    }
  1287.    currentElement.parentNode.insertBefore(rb_tempElement, currentElement.nextSibling);
  1288.    rb_tempElement_check = true;
  1289.    return false;
  1290. }
  1291.  
  1292. /* function currentElementReceiver(revert, curSum, elList, currentElement) {
  1293.    let origCurrentElement = currentElement;
  1294.    let content_pointer = document.querySelector("#content_pointer_id");
  1295.    let sameElementAfterWidth = false;
  1296.    let testCou = 0;
  1297.    while (elList[curSum]&&sameElementAfterWidth==false&&testCou < 5) {
  1298.        currentElement = elList[curSum];
  1299.        try {
  1300.            sameElementAfterWidth=true;
  1301.            sameElementAfterWidth = checkAdsWidth(content_pointer, 0, currentElement);
  1302.        } catch (ex) {
  1303.            console.log(ex.message);
  1304.        }
  1305.        revert? curSum--: curSum++;
  1306.        testCou++;
  1307.    }
  1308.    return currentElement?currentElement:origCurrentElement;
  1309. } */
  1310.  
  1311. function currentElementReceiverSpec(revert, curSum, elList, currentElement) {
  1312.    let origCurrentElement = currentElement;
  1313.    let content_pointer = document.querySelector("#content_pointer_id"); /* orig */
  1314.    let sameElementAfterWidth = false;
  1315.    let testCou = 0;
  1316.    while (elList[curSum]&&sameElementAfterWidth==false&&testCou < 5) {
  1317.        currentElement = elList[curSum]['element'];
  1318.        try {
  1319.            sameElementAfterWidth=true;
  1320.            sameElementAfterWidth = checkAdsWidth(content_pointer, 0, currentElement);
  1321.        } catch (ex) {
  1322.            console.log(ex.message);
  1323.        }
  1324.        revert? curSum--: curSum++;
  1325.        testCou++;
  1326.    }
  1327.    return currentElement?currentElement:origCurrentElement;
  1328. }
  1329.  
  1330. function excIdClUnpacker() {
  1331.    let excArr = [],
  1332.        cou = 0,
  1333.        currExcStr = '',
  1334.        curExcFirst = '';
  1335.    excArr['id'] = [];
  1336.    excArr['class'] = [];
  1337.    excArr['tag'] = [];
  1338.    if (excIdClass&&excIdClass.length > 0) {
  1339.        while (excIdClass[cou]) {
  1340.            currExcStr = excIdClass[cou];
  1341.            if (currExcStr.length > 0) {
  1342.                curExcFirst = currExcStr.substring(0,1);
  1343.                switch (curExcFirst) {
  1344.                    case '#':
  1345.                        if (currExcStr.length > 1) {
  1346.                            currExcStr = currExcStr.substring(1);
  1347.                            excArr['id'].push(currExcStr);
  1348.                        }
  1349.                        break;
  1350.                    case '.':
  1351.                        if (currExcStr.length > 1) {
  1352.                            currExcStr = currExcStr.substring(1);
  1353.                            excArr['class'].push(currExcStr);
  1354.                        }
  1355.                        break;
  1356.                    default:
  1357.                        excArr['tag'].push(currExcStr);
  1358.                        break;
  1359.                }
  1360.                cou++;
  1361.            }
  1362.        }
  1363.    }
  1364.    return excArr;
  1365. }
  1366.  
  1367. function asyncBlocksInsertingFunction(blockSettingArray) {
  1368.    try {
  1369.        var content_pointer = document.querySelector("#content_pointer_id"); /* orig */
  1370.        var parent_with_content = content_pointer.parentElement;
  1371.        var lordOfElements = parent_with_content;
  1372.        parent_with_content = parent_with_content.parentElement;
  1373.        var newElement = document.createElement("div");
  1374.        var elementToAdd;
  1375.        var elementToAddStyle;
  1376.        var poolbackI = 0;
  1377.        var counter = 0;
  1378.        var currentElement;
  1379.        var repeatableCurrentElement;
  1380.        var repeatableSuccess;
  1381.        var reCou;
  1382.        var curFirstPlace;
  1383.        var curElementCount;
  1384.        var curElementStep;
  1385.        var backElement = 0;
  1386.        var sumResult = 0;
  1387.        var curSumResult = 0;
  1388.        var repeat = false;
  1389.        var currentElementChecker = false;
  1390.        let containerFor6th = [];
  1391.        let containerFor7th = [];
  1392.        var posCurrentElement;
  1393.        var block_number;
  1394.        let contentLength = content_pointer.getAttribute('data-content-length');
  1395.        let rejectedBlocks = content_pointer.getAttribute('data-rejected-blocks');
  1396.        if (rejectedBlocks&&rejectedBlocks.length > 0) {
  1397.            rejectedBlocks = rejectedBlocks.split(',');
  1398.        }
  1399.        let widthCheck = false;
  1400.        let currentElementList;
  1401.        var testElement1 = null;
  1402.        var termorarity_parent_with_content = parent_with_content;
  1403.        var termorarity_parent_with_content_length = 0;
  1404.        var headersList = ['h1', 'h2', 'h3', 'h4', 'h5', 'h6'];
  1405.        for (var hc1 = 0; hc1 < headersList.length; hc1++) {
  1406.            termorarity_parent_with_content_length += termorarity_parent_with_content.getElementsByTagName(headersList[hc1]).length;
  1407.        }
  1408.  
  1409.        let detailedElementList;
  1410.        let ExcStrCou = 1;
  1411.        let detailedQueryString;
  1412.        let usedElement;
  1413.        let tagList = [];
  1414.        let localSumResult;
  1415.        let binderName;
  1416.  
  1417.        var removeClearing;
  1418.        var repeatableBlockIdentifier = 0;
  1419.  
  1420.        var i;
  1421.  
  1422.        if (contentLength < 1) {
  1423.            contentLength = parent_with_content.innerText.length
  1424.        }
  1425.  
  1426.        rb_tempElement = document.querySelector('#rb_tempElement');
  1427.        if (!rb_tempElement) {
  1428.            rb_tempElement = document.createElement('span');
  1429.            rb_tempElement.setAttribute('id', 'rb_tempElement');
  1430.        }
  1431.  
  1432.        function getFromConstructions(currentElement) {
  1433.            if (currentElement.parentElement.tagName.toLowerCase() == "blockquote") {
  1434.                currentElement = currentElement.parentElement;
  1435.                /* initTargetToInsert(blockSettingArray, 'element', currentElement); */
  1436.                currentElement.parentNode.insertBefore(rb_tempElement, currentElement);
  1437.                rb_tempElement_check = true;
  1438.                sameElementAfterFromConstruction=false;
  1439.            } else if (["tr","td","th","thead","tbody","table"].includes(currentElement.parentElement.tagName.toLowerCase())) {
  1440.                currentElement = currentElement.parentElement;
  1441.                while (["tr","td","th","thead","tbody","table"].includes(currentElement.parentElement.tagName.toLowerCase())) {
  1442.                    currentElement = currentElement.parentElement;
  1443.                }
  1444.                currentElement.parentNode.insertBefore(rb_tempElement, currentElement);
  1445.                rb_tempElement_check = true;
  1446.                sameElementAfterFromConstruction=false;
  1447.            }
  1448.            return currentElement;
  1449.        }
  1450.  
  1451.        function directClassElementDetecting(blockSettingArray, directElement) {
  1452.            let findQuery = 0;
  1453.            let directClassElementResult = [];
  1454.  
  1455.            currentElement = document.querySelectorAll(directElement);
  1456.            if (currentElement.length > 0) {
  1457.                if (blockSettingArray[i]['elementPlace'] > 1) {
  1458.                    if (currentElement.length >= blockSettingArray[i]['elementPlace']) {
  1459.                        currentElement = currentElement[blockSettingArray[i]['elementPlace']-1];
  1460.                    } else if (currentElement.length < blockSettingArray[i]['elementPlace']) {
  1461.                        currentElement = currentElement[currentElement.length - 1];
  1462.                    } else {
  1463.                        findQuery = 1;
  1464.                    }
  1465.                } else if (blockSettingArray[i]['elementPlace'] < 0) {
  1466.                    if ((currentElement.length + blockSettingArray[i]['elementPlace'] + 1) > 0) {
  1467.                        currentElement = currentElement[currentElement.length + blockSettingArray[i]['elementPlace']];
  1468.                    } else {
  1469.                        findQuery = 1;
  1470.                    }
  1471.                } else {
  1472.                    findQuery = 1;
  1473.                }
  1474.            } else {
  1475.                findQuery = 1;
  1476.            }
  1477.  
  1478.            directClassElementResult['findQuery'] = findQuery;
  1479.            directClassElementResult['currentElement'] = currentElement;
  1480.  
  1481.            return directClassElementResult;
  1482.        }
  1483.  
  1484.        function placingToH1(usedElement, elementTagToFind) {
  1485.            let uselessLet;
  1486.            currentElement = usedElement.querySelectorAll(elementTagToFind);
  1487.  
  1488.            if (currentElement.length < 1) {
  1489.                if (usedElement.parentElement) {
  1490.                    uselessLet = placingToH1(usedElement.parentElement, elementTagToFind);
  1491.                }
  1492.            }
  1493.            return currentElement;
  1494.        }
  1495.  
  1496.        function elementsCleaning(excArr, elList, pwcLocal, gatherString) {
  1497.            let markedClass = 'rb_m_inc';
  1498.            let markedClassBad = 'rb_m_exc';
  1499.            let cou = 0;
  1500.            let cou1 = 0;
  1501.            let finalArr = [];
  1502.            let finalArrClear = [];
  1503.            let checkNearest;
  1504.            let outOfRangeCheck;
  1505.            let gatherRejected;
  1506.            let allower;
  1507.  
  1508.            try {
  1509.                while (elList[cou]) {
  1510.                    allower = true;
  1511.                    if (!elList[cou].classList.contains(markedClassBad)) {
  1512.                        if (excArr&&excArr.length > 0) {
  1513.                            cou1 = 0;
  1514.                            while (excArr[cou1]) {
  1515.                                checkNearest = elList[cou].parentElement.closest(excArr[cou1]);
  1516.                                if (checkNearest) {
  1517.                                    checkNearest.classList.add('currClosest');
  1518.                                    outOfRangeCheck = pwcLocal.querySelector('.currClosest');
  1519.                                    if (outOfRangeCheck) {
  1520.                                        allower = false;
  1521.                                        checkNearest.classList.add(markedClass);
  1522.                                        gatherRejected = checkNearest.querySelectorAll(gatherString);
  1523.                                        if (gatherRejected.length > 0) {
  1524.                                            for (let i1 = 0; i1 < gatherRejected.length; i1++) {
  1525.                                                gatherRejected[i1].classList.add(markedClassBad);
  1526.                                            }
  1527.                                        }
  1528.                                    }
  1529.                                    checkNearest.classList.remove('currClosest');
  1530.                                }
  1531.                                cou1++;
  1532.                            }
  1533.                        }
  1534.                        if (allower===true) {
  1535.                            elList[cou].classList.add(markedClass);
  1536.                            /* finalArr.push(elList[cou]); */
  1537.                        }
  1538.                    }
  1539.                    cou++;
  1540.                }
  1541.                finalArr = pwcLocal.querySelectorAll('.'+markedClass+':not('+markedClassBad+')');
  1542.                finalArrClear = pwcLocal.querySelectorAll('.'+markedClass+',.'+markedClassBad);
  1543.                if (finalArrClear&&finalArrClear.length > 0) {
  1544.                    for (let i1 = 0; i1 < finalArrClear.length; i1++) {
  1545.                        finalArrClear[i1].classList.remove(markedClass,markedClassBad);
  1546.                    }
  1547.                }
  1548.            } catch (er) {
  1549.                console.log(er.message);
  1550.            }
  1551.            return finalArr;
  1552.        }
  1553.  
  1554.        function cureentElementsGather(usedElement, loopLimit = 2, localPwc = parent_with_content) {
  1555.            let curElementSearchRepeater = true;
  1556.            let curElementSearchCounter = 0;
  1557.            let currentElementLoc = null;
  1558.            let ExcludedStringBegin = '';
  1559.            let ExcludedString = '';
  1560.            let ExcludedStringEnd = '';
  1561.            let tagListString = '';
  1562.            let tagListStringExc = '';
  1563.            let cou = 0;
  1564.            /* let excArr = excIdClUnpacker(); */
  1565.            let tagListCou = 0;
  1566.  
  1567.            if (usedElement=='h1') {
  1568.                currentElementLoc = placingToH1(localPwc, usedElement);
  1569.            } else {
  1570.                if (usedElement=='h2-4') {tagList = ['h2','h3','h3'];}
  1571.                else                     {tagList = [usedElement];   }
  1572.                while (tagList[tagListCou]) {
  1573.                    tagListString += ((cou++>0)?',':'')+tagList[tagListCou];
  1574.                    tagListStringExc += ':not('+tagList[tagListCou]+')';
  1575.                    tagListCou++;
  1576.                }
  1577.  
  1578.                ExcludedString = '';
  1579.                if (excIdClass&&excIdClass.length > 0) {
  1580.                    for (let i2 = 0; i2 < excIdClass.length; i2++) {
  1581.                        if (excIdClass[i2].length > 0) {
  1582.                            ExcludedString += (i2>0?',':'')+excIdClass[i2]+tagListStringExc;
  1583.                        }
  1584.                    }
  1585.                }
  1586.                detailedQueryString += tagListString+','+ExcludedString;
  1587.  
  1588.                /* console.log(detailedQueryString); */
  1589.                while (curElementSearchRepeater&&curElementSearchCounter < loopLimit) {
  1590.                    try {
  1591.                        currentElementLoc = localPwc.querySelectorAll(tagListString);
  1592.                    } catch (e1) {console.log(e1.message);}
  1593.                    if (!currentElementLoc) {
  1594.                        if (localPwc.parentElement) {
  1595.                            localPwc = localPwc.parentElement;
  1596.                        } else {
  1597.                            break;
  1598.                        }
  1599.                    } else {
  1600.                        currentElementLoc = elementsCleaning(excIdClass, currentElementLoc, localPwc, detailedQueryString);
  1601.                        curElementSearchRepeater = false;
  1602.                    }
  1603.                    curElementSearchCounter++;
  1604.                }
  1605.            }
  1606.            return currentElementLoc;
  1607.        }
  1608.  
  1609.        function currentElementReceiver(revert, localCurEl = currentElement) {
  1610.            let origCurEl = localCurEl;
  1611.            curSumResult = sumResult;
  1612.            detailedElementList = localCurEl;
  1613.            sameElementAfterWidth = false;
  1614.            let testCou = 0;
  1615.            while (detailedElementList[curSumResult]&&sameElementAfterWidth==false&&testCou < 8) {
  1616.                localCurEl = detailedElementList[curSumResult];
  1617.                try {
  1618.                    sameElementAfterWidth=true;
  1619.                    sameElementAfterWidth = checkAdsWidth(content_pointer, blockSettingArray[i]["elementPosition"], localCurEl);
  1620.                } catch (ex) {
  1621.                    console.log(ex.message);
  1622.                }
  1623.                revert? curSumResult--: curSumResult++;
  1624.                testCou++;
  1625.            }
  1626.            if (localCurEl) {
  1627.                currentElementChecker = true;
  1628.            }
  1629.            return localCurEl?localCurEl:origCurEl;
  1630.        }
  1631.        
  1632.        function endingActions(block_number) {
  1633.            usedBlockSettingArrayIds.push(block_number);
  1634.            blockSettingArray.splice(i--, 1);
  1635.            poolbackI = 1;
  1636.        }
  1637.  
  1638.        for (i = 0; i < blockSettingArray.length; i++) {
  1639.            currentElement = null;
  1640.            currentElementChecker = false;
  1641.            sameElementAfterWidth = false;
  1642.            sameElementAfterExcClassId = false;
  1643.            sameElementAfterFromConstruction = false;
  1644.            tagListCou = 0;
  1645.            poolbackI = 0;
  1646.            detailedQueryString = '';
  1647.            binderName = elementBinderNameGenerator();
  1648.  
  1649.            try {
  1650.                if (!blockSettingArray[i]["text"]
  1651.                    ||(blockSettingArray[i]["text"]&&blockSettingArray[i]["text"].length < 1)
  1652.                    ||(rejectedBlocks&&rejectedBlocks.includes(blockSettingArray[i]["id"]))
  1653.                    ||((blockSettingArray[i]["maxHeaders"] > 0)&&(blockSettingArray[i]["maxHeaders"] < parseInt(termorarity_parent_with_content_length)))
  1654.                    ||((blockSettingArray[i]["maxSymbols"] > 0)&&(blockSettingArray[i]["maxSymbols"] < parseInt(contentLength)))
  1655.                    ||(content_pointer.classList.contains("hard-content")&&blockSettingArray[i]["setting_type"]!=3)
  1656.                ) {
  1657.                    blockSettingArray.splice(i--, 1);
  1658.                    poolbackI = 1;
  1659.                    continue;
  1660.                }
  1661.  
  1662.                block_number = 0;
  1663.  
  1664.                elementToAdd = document.createElement("div");
  1665.                elementToAdd.classList.add("percentPointerClass");
  1666.                elementToAdd.classList.add("marked");
  1667.                if (blockSettingArray[i]["sc"]==1) {
  1668.                    elementToAdd.classList.add("scMark");
  1669.                }
  1670.                elementToAdd.innerHTML = blockSettingArray[i]["text"];
  1671.                elementToAdd.dataset.rbinder = binderName;
  1672.                block_number = elementToAdd.children[0].attributes['data-id'].value;
  1673.  
  1674.                if (blockDuplicate == 'no') {
  1675.                    if (usedBlockSettingArrayIds.length > 0) {
  1676.                        for (let i1 = 0; i1 < usedBlockSettingArrayIds.length; i1++) {
  1677.                            if (block_number==usedBlockSettingArrayIds[i1]) {
  1678.                                blockSettingArray.splice(i--, 1);
  1679.                                poolbackI = 1;
  1680.                                break;
  1681.                            }
  1682.                        }
  1683.                        if (poolbackI == 1) {
  1684.                            continue;
  1685.                        }
  1686.                    }
  1687.                }
  1688.  
  1689.                elementToAddStyle = createStyleElement(block_number, blockSettingArray[i]["elementCss"]);
  1690.  
  1691.                if (elementToAddStyle&&elementToAddStyle!='default') {
  1692.                    elementToAdd.style.textAlign = elementToAddStyle;
  1693.                }
  1694.  
  1695.                if ((blockSettingArray[i]["minHeaders"] > 0)&&(blockSettingArray[i]["minHeaders"] > termorarity_parent_with_content_length)) {continue;}
  1696.                if (blockSettingArray[i]["minSymbols"] > contentLength) {continue;}
  1697.  
  1698.                if (blockSettingArray[i]["setting_type"] == 1) {
  1699.                    currentElement = cureentElementsGather(blockSettingArray[i]["element"].toLowerCase());
  1700.                    if (currentElement) {
  1701.                        if (blockSettingArray[i]["elementPlace"] < 0) {
  1702.                            sumResult = currentElement.length + blockSettingArray[i]["elementPlace"];
  1703.                            if (sumResult >= 0 && sumResult < currentElement.length) {
  1704.                                currentElement = currentElementReceiver(true);
  1705.                            }
  1706.                        } else {
  1707.                            sumResult = blockSettingArray[i]["elementPlace"] - 1;
  1708.                            if (sumResult < currentElement.length) {
  1709.                                currentElement = currentElementReceiver(false);
  1710.                            }
  1711.                        }
  1712.                    }
  1713.                    if (currentElement != undefined && currentElement != null && currentElementChecker) {
  1714.                        posCurrentElement = initTargetToInsert(blockSettingArray[i]["elementPosition"], 'element', currentElement);
  1715.                        currentElement.parentNode.insertBefore(elementToAdd, posCurrentElement);
  1716.                        currentElement.classList.add('rbinder-'+binderName);
  1717.                        elementToAdd.classList.remove('coveredAd');
  1718.                        usedBlockSettingArrayIds.push(block_number);
  1719.                        blockSettingArray.splice(i--, 1);
  1720.                        poolbackI = 1;
  1721.                        rb_tempElement_check = false;
  1722.                    } else {
  1723.                        repeat = true;
  1724.                    }
  1725.                }
  1726.                else if (blockSettingArray[i]["setting_type"] == 2) {
  1727.                    if (blockDuplicate == 'no') {
  1728.                        blockSettingArray[i]["elementCount"] = 1;
  1729.                    }
  1730.                    repeatableCurrentElement = [];
  1731.                    reCou = 0;
  1732.                    curFirstPlace = blockSettingArray[i]["firstPlace"];
  1733.                    curElementCount = blockSettingArray[i]["elementCount"];
  1734.                    curElementStep = blockSettingArray[i]["elementStep"];
  1735.                    repeatableSuccess = false;
  1736.  
  1737.                    elementToAddStyle = createStyleElement(block_number, blockSettingArray[i]["elementCss"]);
  1738.  
  1739.                    repeatableCurrentElement = cureentElementsGather(blockSettingArray[i]["element"].toLowerCase());
  1740.                    if (repeatableCurrentElement) {
  1741.                        for (let i1 = 0; i1 < blockSettingArray[i]["elementCount"]; i1++) {
  1742.                            currentElementChecker = false;
  1743.                            let repElementToAdd = document.createElement("div");
  1744.                            repElementToAdd.classList.add("percentPointerClass");
  1745.                            repElementToAdd.classList.add("marked");
  1746.                            if (blockSettingArray[i]["sc"]==1) {
  1747.                                repElementToAdd.classList.add("scMark");
  1748.                            }
  1749.                            repElementToAdd.classList.add("repeatable-mark-"+repeatableBlockIdentifier);
  1750.                            repElementToAdd.innerHTML = blockSettingArray[i]["text"];
  1751.  
  1752.                            if (elementToAddStyle&&elementToAddStyle!='default') {
  1753.                                repElementToAdd.style.textAlign = elementToAddStyle;
  1754.                            }
  1755.  
  1756.                            sumResult = Math.round(parseInt(blockSettingArray[i]["firstPlace"]) + (i1*parseInt(blockSettingArray[i]["elementStep"])) - 1);
  1757.                            if (sumResult < repeatableCurrentElement.length) {
  1758.                                currentElement = currentElementReceiver(false, repeatableCurrentElement);
  1759.                            }
  1760.  
  1761.                            if (currentElement != undefined && currentElement != null && currentElementChecker) {
  1762.                                posCurrentElement = initTargetToInsert(blockSettingArray[i]["elementPosition"], 'element', currentElement);
  1763.                                currentElement.parentNode.insertBefore(repElementToAdd, posCurrentElement);
  1764.                                currentElement.classList.add('rbinder-'+binderName);
  1765.                                repElementToAdd.classList.remove('coveredAd');
  1766.                                curFirstPlace = sumResult + parseInt(blockSettingArray[i]["elementStep"]) + 1;
  1767.                                curElementCount--;
  1768.                                repeatableSuccess = true;
  1769.                            } else {
  1770.                                repeatableSuccess = false;
  1771.                                break;
  1772.                            }
  1773.                        }
  1774.                    }
  1775.                    if (repeatableSuccess==true) {
  1776.                        usedBlockSettingArrayIds.push(block_number);
  1777.                        blockSettingArray.splice(i--, 1);
  1778.                        poolbackI = 1;
  1779.                        repeatableBlockIdentifier++;
  1780.                    } else {
  1781.                        if (!blockSettingArray[i]["unsuccess"]) {
  1782.                            blockSettingArray[i]["unsuccess"] = 1;
  1783.                        } else {
  1784.                            blockSettingArray[i]["unsuccess"] = Math.round(blockSettingArray[i]["unsuccess"] + 1);
  1785.                        }
  1786.                        if (blockSettingArray[i]["unsuccess"] > 10) {
  1787.                            usedBlockSettingArrayIds.push(block_number);
  1788.                            blockSettingArray.splice(i--, 1);
  1789.                            poolbackI = 1;
  1790.                        } else {
  1791.                            blockSettingArray[i]["firstPlace"] = curFirstPlace;
  1792.                            blockSettingArray[i]["elementCount"] = curElementCount;
  1793.                            blockSettingArray[i]["elementStep"] = curElementStep;
  1794.                            repeat = true;
  1795.                        }
  1796.                    }
  1797.                }
  1798.                else if (blockSettingArray[i]["setting_type"] == 3) {
  1799.                    let elementTypeSymbol = '';
  1800.                    let elementSpaceSymbol = '';
  1801.                    let elementName = '';
  1802.                    let elementType = '';
  1803.                    let elementTag  = '';
  1804.                    let findQuery = 0;
  1805.                    let directClassResult = [];
  1806.                    let directElement = blockSettingArray[i]["directElement"].trim();
  1807.  
  1808.                    if (directElement.search('#') > -1) {
  1809.                        findQuery = 1;
  1810.                    } else if ((directElement.search('#') < 0)&&(directElement.search('.') > -1)) {
  1811.                        directClassResult = directClassElementDetecting(blockSettingArray, directElement);
  1812.                        findQuery = directClassResult['findQuery'];
  1813.                        currentElement = directClassResult['currentElement'];
  1814.                    }
  1815.                    if (findQuery == 1) {
  1816.                        currentElement = document.querySelector(directElement);
  1817.                    }
  1818.                    if (currentElement) {
  1819.                        currentElementChecker = true;
  1820.                    }
  1821.  
  1822.                    if (currentElement != undefined && currentElement != null && currentElementChecker) {
  1823.                        posCurrentElement = initTargetToInsert(blockSettingArray[i]["elementPosition"], 'element', currentElement);
  1824.                        currentElement.parentNode.insertBefore(elementToAdd, posCurrentElement);
  1825.                        elementToAdd.classList.remove('coveredAd');
  1826.                        currentElement.classList.add('rbinder-'+binderName);
  1827.                        usedBlockSettingArrayIds.push(block_number);
  1828.                        blockSettingArray.splice(i--, 1);
  1829.                        poolbackI = 1;
  1830.                    } else {
  1831.                        repeat = true;
  1832.                    }
  1833.                }
  1834.                else if (blockSettingArray[i]["setting_type"] == 4) {
  1835.                    document.querySelector("#content_pointer_id").parentElement.append(elementToAdd);
  1836.                    usedBlockSettingArrayIds.push(block_number);
  1837.                    blockSettingArray.splice(i--, 1);
  1838.                    poolbackI = 1;
  1839.                }
  1840.                else if (blockSettingArray[i]["setting_type"] == 5) {
  1841.                    let currentElementList = cureentElementsGather('p', 1, content_pointer.parentElement);
  1842.                    if (currentElementList&&currentElementList.length > 0) {
  1843.                        let pCount = currentElementList.length;
  1844.                        let elementNumber = Math.round(pCount/2);
  1845.                        if (pCount > 1) {
  1846.                            currentElement = currentElementList[elementNumber+1];
  1847.                        }
  1848.                        if (currentElement != undefined && currentElement != null) {
  1849.                            if (pCount > 1) {
  1850.                                currentElement.parentNode.insertBefore(elementToAdd, currentElement);
  1851.                            } else {
  1852.                                currentElement.parentNode.insertBefore(elementToAdd, currentElement.nextSibling);
  1853.                            }
  1854.                            elementToAdd.classList.remove('coveredAd');
  1855.                            currentElement.classList.add('rbinder-'+binderName);
  1856.                            usedBlockSettingArrayIds.push(block_number);
  1857.                            blockSettingArray.splice(i--, 1);
  1858.                            poolbackI = 1;
  1859.                        } else {
  1860.                            repeat = true;
  1861.                        }
  1862.                    } else {
  1863.                        repeat = true;
  1864.                    }
  1865.                }
  1866.                else if (blockSettingArray[i]["setting_type"] == 6) {
  1867.                    if (containerFor6th.length > 0) {
  1868.                        for (let j = 0; j < containerFor6th.length; j++) {
  1869.                            if (containerFor6th[j]["elementPlace"]<blockSettingArray[i]["elementPlace"]) {
  1870.                                /* continue; */
  1871.                                if (j == containerFor6th.length-1) {
  1872.                                    containerFor6th.push(blockSettingArray[i]);
  1873.                                    /* usedAdBlocksArray.push(checkIfBlockUsed); */
  1874.                                    usedBlockSettingArrayIds.push(block_number);
  1875.                                    blockSettingArray.splice(i--, 1);
  1876.                                    poolbackI = 1;
  1877.                                    break;
  1878.                                }
  1879.                            } else {
  1880.                                for (let k = containerFor6th.length-1; k > j-1; k--) {
  1881.                                    containerFor6th[k + 1] = containerFor6th[k];
  1882.                                }
  1883.                                containerFor6th[j] = blockSettingArray[i];
  1884.                                /* usedAdBlocksArray.push(checkIfBlockUsed); */
  1885.                                usedBlockSettingArrayIds.push(block_number);
  1886.                                blockSettingArray.splice(i--, 1);
  1887.                                poolbackI = 1;
  1888.                                break;
  1889.                            }
  1890.                        }
  1891.                    } else {
  1892.                        containerFor6th.push(blockSettingArray[i]);
  1893.                        usedBlockSettingArrayIds.push(block_number);
  1894.                        blockSettingArray.splice(i--, 1);
  1895.                        poolbackI = 1;
  1896.                    }
  1897.                /* vidpravutu v vidstiinuk dlya 6ho tipa */
  1898.                }
  1899.                else if (blockSettingArray[i]["setting_type"] == 7) {
  1900.                    if (containerFor7th.length > 0) {
  1901.                        for (let j = 0; j < containerFor7th.length; j++) {
  1902.                            if (containerFor7th[j]["elementPlace"]<blockSettingArray[i]["elementPlace"]) {
  1903.                                /* continue; */
  1904.                                if (j == containerFor7th.length-1) {
  1905.                                    containerFor7th.push(blockSettingArray[i]);
  1906.                                    usedBlockSettingArrayIds.push(block_number);
  1907.                                    blockSettingArray.splice(i--, 1);
  1908.                                    poolbackI = 1;
  1909.                                    break;
  1910.                                }
  1911.                            } else {
  1912.                                for (let k = containerFor7th.length-1; k > j-1; k--) {
  1913.                                    containerFor7th[k + 1] = containerFor7th[k];
  1914.                                }
  1915.                                containerFor7th[j] = blockSettingArray[i];
  1916.                                usedBlockSettingArrayIds.push(block_number);
  1917.                                blockSettingArray.splice(i--, 1);
  1918.                                poolbackI = 1;
  1919.                                break;
  1920.                            }
  1921.                        }
  1922.                    } else {
  1923.                        containerFor7th.push(blockSettingArray[i]);
  1924.                        usedBlockSettingArrayIds.push(block_number);
  1925.                        blockSettingArray.splice(i--, 1);
  1926.                        poolbackI = 1;
  1927.                    }
  1928.                /* vidpravutu v vidstiinuk dlya 7ho tipa */
  1929.                }
  1930.            } catch (e) {
  1931.                console.log(e.message);
  1932.            }
  1933.        }
  1934.  
  1935.        var array = textLengthGatherer(lordOfElements),
  1936.            tlArray = array.array,
  1937.            length = array.length;
  1938.  
  1939.        if (containerFor6th.length > 0) {
  1940.            percentInserter(lordOfElements, containerFor6th, tlArray, length);
  1941.        }
  1942.        if (containerFor7th.length > 0) {
  1943.            symbolInserter(lordOfElements, containerFor7th, tlArray);
  1944.        }
  1945.        shortcodesInsert();
  1946.        let stopper = 0;
  1947.  
  1948.        window.addEventListener('load', function () {
  1949.            if (repeat = true) {
  1950.                setTimeout(function () {
  1951.                    /* asyncBlocksInsertingFunction(blockSettingArray, contentLength) */
  1952.                    asyncBlocksInsertingFunction(blockSettingArray);
  1953.                }, 100);
  1954.            }
  1955.        });
  1956.    } catch (e) {
  1957.        console.log(e.message);
  1958.    }
  1959. }
  1960.  
  1961. function possibleTagsInCheckConfirmer(possibleTagsArray, possibleTagsInCheck) {
  1962.    if (possibleTagsArray.includes("LI")) {
  1963.        if (possibleTagsArray.includes("UL")) {
  1964.            possibleTagsInCheck.push("UL");
  1965.        }
  1966.        if (possibleTagsArray.includes("OL")) {
  1967.            possibleTagsInCheck.push("OL");
  1968.        }
  1969.    }
  1970.  
  1971.    return false;
  1972. }
  1973.  
  1974. function textLengthGatherer(lordOfElementsLoc) {
  1975.    var possibleTagsArray;
  1976.    if (typeof tagsListForTextLength!=="undefined") {
  1977.        possibleTagsArray = tagsListForTextLength;
  1978.    } else {
  1979.        possibleTagsArray = ["P", "H1", "H2", "H3", "H4", "H5", "H6", "DIV", "BLOCKQUOTE", "INDEX", "ARTICLE", "SECTION"];
  1980.    }
  1981.    let possibleTagsInCheck = ["DIV", "INDEX", "SECTION"];
  1982.  
  1983.    possibleTagsInCheckConfirmer(possibleTagsArray, possibleTagsInCheck);
  1984.    let excArr = excIdClUnpacker(),
  1985.        textLength = 0,
  1986.        tlArray = [];
  1987.  
  1988.    function textLengthGathererRec(lordOfElementsLoc) {
  1989.        let allowed;
  1990.        let cou1;
  1991.        let classesArray;
  1992.        let countSuccess = 0;
  1993.        try {
  1994.            for (let i = 0; i < lordOfElementsLoc.children.length; i++) {
  1995.                if (possibleTagsArray.includes(lordOfElementsLoc.children[i].tagName)
  1996.                    &&!lordOfElementsLoc.children[i].classList.contains("percentPointerClass")
  1997.                    &&lordOfElementsLoc.children[i].id!="toc_container"
  1998.                ) {
  1999.                    if (possibleTagsInCheck.includes(lordOfElementsLoc.children[i].tagName)
  2000.                        &&(lordOfElementsLoc.children[i].children.length > 0)
  2001.                    ) {
  2002.                        allowed = true;
  2003.                        if (lordOfElementsLoc.children[i].id&&excArr['id'].length > 0) {
  2004.                            cou1 = 0;
  2005.                            while (excArr['id'][cou1]) {
  2006.                                if (lordOfElementsLoc.children[i].id.toLowerCase()==excArr['id'][cou1].toLowerCase()) {
  2007.                                    allowed = false;
  2008.                                    break;
  2009.                                }
  2010.                                cou1++;
  2011.                            }
  2012.                        }
  2013.  
  2014.                        if (lordOfElementsLoc.children[i].classList.length > 0&&excArr['class'].length > 0) {
  2015.                            cou1 = 0;
  2016.                            while (excArr['class'][cou1]) {
  2017.                                classesArray = excArr['class'][cou1].split('.');
  2018.                                if (classesArray.every(className => lordOfElementsLoc.children[i].classList.contains(className))) {
  2019.                                    allowed = false;
  2020.                                    break;
  2021.                                }
  2022.                                cou1++;
  2023.                            }
  2024.                        }
  2025.  
  2026.                        if (excArr['tag'].length > 0) {
  2027.                            cou1 = 0;
  2028.                            while (excArr['tag'][cou1]) {
  2029.                                if (lordOfElementsLoc.children[i].tagName.toLowerCase()==excArr['tag'][cou1].toLowerCase()) {
  2030.                                    allowed = false;
  2031.                                    break;
  2032.                                }
  2033.                                cou1++;
  2034.                            }
  2035.                        }
  2036.  
  2037.                        if (allowed) {
  2038.                            if (textLengthGathererRec(lordOfElementsLoc.children[i], excArr, possibleTagsArray, possibleTagsInCheck)) {
  2039.                                countSuccess++;
  2040.                                continue;
  2041.                            }
  2042.                        }
  2043.                    }
  2044.                    textLength = textLength + lordOfElementsLoc.children[i].innerText.length;
  2045.                    tlArray.push({
  2046.                        tag: lordOfElementsLoc.children[i].tagName,
  2047.                        length: lordOfElementsLoc.children[i].innerText.length,
  2048.                        lengthSum: textLength,
  2049.                        element: lordOfElementsLoc.children[i]
  2050.                    });
  2051.                    countSuccess++;
  2052.                }
  2053.            }
  2054.        } catch (er) {
  2055.            console.log(er.message);
  2056.        }
  2057.        return countSuccess > 0;
  2058.    }
  2059.  
  2060.    textLengthGathererRec(lordOfElementsLoc);
  2061.  
  2062.    return {array: tlArray, length: textLength};
  2063. }
  2064.  
  2065. window.asyncFunctionLauncher = function() {
  2066.    if (window.jsInputerLaunch !== undefined
  2067.        &&[15, 10].includes(window.jsInputerLaunch)
  2068.        &&(typeof asyncBlocksInsertingFunction !== 'undefined' )
  2069.        &&(typeof asyncBlocksInsertingFunction === 'function')
  2070.        &&typeof endedSc!=='undefined'&&
  2071.        typeof endedCc!=='undefined'&&
  2072.        typeof usedAdBlocksArray!=='undefined'&&
  2073.        typeof usedBlockSettingArrayIds!=='undefined'&&
  2074.        typeof sameElementAfterWidth!=='undefined'&&
  2075.        typeof sameElementAfterExcClassId!=='undefined'&&
  2076.        typeof sameElementAfterFromConstruction!=='undefined'&&
  2077.        typeof rb_tempElement_check!=='undefined'&&
  2078.        typeof rb_tempElement!=='undefined'&&
  2079.        typeof window.jsInputerLaunch!=='undefined') {
  2080.        /* asyncBlocksInsertingFunction(blockSettingArray, contentLength); */
  2081.        asyncBlocksInsertingFunction(blockSettingArray);
  2082.        if (!endedSc) {
  2083.            shortcodesInsert();
  2084.        }
  2085.        if (!endedCc) {
  2086.            /* clearUnsuitableCache(0); */
  2087.        }
  2088.        /* blocksReposition();
  2089.        cachePlacing();
  2090.        symbolMarkersPlaced(); */
  2091.    } else {
  2092.        setTimeout(function () {
  2093.            asyncFunctionLauncher();
  2094.        }, 50);
  2095.    }
  2096. };
  2097. /* asyncFunctionLauncher(); */
  2098.  
  2099. function asyncInsertingsInsertingFunction(insertingsArray) {
  2100.    let currentElementForInserting = 0;
  2101.    let currentElementToMove = 0;
  2102.    let positionElement = 0;
  2103.    let position = 0;
  2104.    let insertToAdd = 0;
  2105.    let postId = 0;
  2106.    let repeatSearch = 0;
  2107.    if (insertingsArray&&insertingsArray.length > 0) {
  2108.        for (let i = 0; i < insertingsArray.length; i++) {
  2109.            if (!insertingsArray[i]['used']||(insertingsArray[i]['used']&&insertingsArray[i]['used']==0)) {
  2110.                positionElement = insertingsArray[i]['position_element'];
  2111.                position = insertingsArray[i]['position'];
  2112.                insertToAdd = insertingsArray[i]['content'];
  2113.                postId = insertingsArray[i]['postId'];
  2114.  
  2115.                currentElementForInserting = document.querySelector(positionElement);
  2116.  
  2117.                currentElementToMove = document.querySelector('.coveredInsertings[data-id="'+postId+'"]');
  2118.                if (currentElementForInserting) {
  2119.                    if (position==0) {
  2120.                        currentElementForInserting.parentNode.insertBefore(currentElementToMove, currentElementForInserting);
  2121.                        currentElementToMove.classList.remove('coveredInsertings');
  2122.                        insertingsArray[i]['used'] = 1;
  2123.                    } else {
  2124.                        currentElementForInserting.parentNode.insertBefore(currentElementToMove, currentElementForInserting.nextSibling);
  2125.                        currentElementToMove.classList.remove('coveredInsertings');
  2126.                        insertingsArray[i]['used'] = 1;
  2127.                    }
  2128.                } else {
  2129.                    repeatSearch = 1;
  2130.                }
  2131.            }
  2132.        }
  2133.    }
  2134.    if (repeatSearch == 1) {
  2135.        setTimeout(function () {
  2136.            asyncInsertingsInsertingFunction(insertingsArray);
  2137.        }, 100)
  2138.    }
  2139. }
  2140.  
  2141. function insertingsFunctionLaunch() {
  2142.    if (window.jsInsertingsLaunch !== undefined&&jsInsertingsLaunch == 25) {
  2143.        asyncInsertingsInsertingFunction(insertingsArray);
  2144.    } else {
  2145.        setTimeout(function () {
  2146.            insertingsFunctionLaunch();
  2147.        }, 100)
  2148.    }
  2149. }
  2150.  
  2151. function setLongCache() {
  2152.    let xhttp = new XMLHttpRequest();
  2153.    let sendData = 'action=setLongCache&type=longCatching';
  2154.    xhttp.onreadystatechange = function(redata) {
  2155.        if (this.readyState == 4 && this.status == 200) {
  2156.            console.log('long cache deployed');
  2157.        }
  2158.    };
  2159.    xhttp.open("POST", rb_ajaxurl, true);
  2160.    xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
  2161.    xhttp.send(sendData);
  2162. }
  2163.  
  2164. function cachePlacing(alert_type, errorInfo=null) {
  2165.    let adBlocks = document.querySelectorAll('.percentPointerClass .' + block_classes.join(', .percentPointerClass .'));
  2166.    let curAdBlock;
  2167.    let okStates = ['done','refresh-wait','no-block','fetched'];
  2168.    /* let adId = -1; */
  2169.    let blockAid = null;
  2170.    let blockId;
  2171.  
  2172.    if (typeof cachedBlocksArray !== 'undefined'&&cachedBlocksArray&&cachedBlocksArray.length > 0&&adBlocks&&adBlocks.length > 0) {
  2173.        for (let i = 0; i < adBlocks.length; i++) {
  2174.            blockAid = adBlocks[i]['dataset']['aid'];
  2175.  
  2176.            if (!blockAid) {
  2177.                blockId = adBlocks[i]['dataset']['id'];
  2178.                if (cachedBlocksArray[blockId]) {
  2179.                    jQuery(adBlocks[i]).html(cachedBlocksArray[blockId]);
  2180.                }
  2181.            }
  2182.        }
  2183.    }
  2184.  
  2185.    if (alert_type&&alert_type=='high') {
  2186.        setLongCache();
  2187.    }
  2188. }
  2189.  
  2190. function symbolInserter(lordOfElements, containerFor7th, tlArray) {
  2191.    try {
  2192.        var currentChildrenLength = 0;
  2193.        let previousBreak = 0;
  2194.        let needleLength;
  2195.        let currentSumLength;
  2196.        let elementToAdd;
  2197.        let elementToBind;
  2198.        let elementToAddStyle;
  2199.        let block_number;
  2200.        let binderName;
  2201.  
  2202.        if (!document.getElementById("markedSpan1")) {
  2203.            for (let i = 0; i < containerFor7th.length; i++) {
  2204.                previousBreak = 0;
  2205.                currentChildrenLength = 0;
  2206.                currentSumLength = 0;
  2207.                needleLength = Math.abs(containerFor7th[i]['elementPlace']);
  2208.                binderName = elementBinderNameGenerator();
  2209.  
  2210.                elementToAdd = document.createElement("div");
  2211.                elementToAdd.classList.add("percentPointerClass");
  2212.                elementToAdd.classList.add("marked");
  2213.                if (containerFor7th[i]["sc"]==1) {
  2214.                    elementToAdd.classList.add("scMark");
  2215.                }
  2216.                elementToAdd.dataset.rbinder = binderName;
  2217.                elementToAdd.innerHTML = containerFor7th[i]["text"];
  2218.                block_number = elementToAdd.children[0].attributes['data-id'].value;
  2219.                if (!elementToAdd) {
  2220.                    continue;
  2221.                }
  2222.  
  2223.                elementToAddStyle = createStyleElement(block_number, containerFor7th[i]["elementCss"]);
  2224.  
  2225.                if (elementToAddStyle&&elementToAddStyle!='default') {
  2226.                    elementToAdd.style.textAlign = elementToAddStyle;
  2227.                }
  2228.  
  2229.                if (containerFor7th[i]['elementPlace'] < 0) {
  2230.                    for (let j = tlArray.length-1; j > -1; j--) {
  2231.                        currentSumLength = currentSumLength + tlArray[j]['length'];
  2232.                        if (needleLength < currentSumLength) {
  2233.                            elementToBind = tlArray[j]['element'];
  2234.                            elementToBind = currentElementReceiverSpec(true, j, tlArray, elementToBind);
  2235.                            elementToBind.parentNode.insertBefore(elementToAdd, elementToBind);
  2236.                            elementToBind.classList.add('rbinder-'+binderName);
  2237.                            elementToAdd.classList.remove('coveredAd');
  2238.                            break;
  2239.                        }
  2240.                    }
  2241.                } else if (containerFor7th[i]['elementPlace'] == 0) {
  2242.                    elementToBind = tlArray[0]['element'];
  2243.                    elementToBind.parentNode.insertBefore(elementToAdd, elementToBind);
  2244.                    elementToBind.classList.add('rbinder-'+binderName);
  2245.                    elementToAdd.classList.remove('coveredAd');
  2246.                } else {
  2247.                    for (let j = 0; j < tlArray.length; j++) {
  2248.                        currentSumLength = currentSumLength + tlArray[j]['length'];
  2249.                        if (needleLength < currentSumLength) {
  2250.                            elementToBind = tlArray[j]['element'];
  2251.                            elementToBind = currentElementReceiverSpec(false, j, tlArray, elementToBind);
  2252.                            elementToBind.parentNode.insertBefore(elementToAdd, elementToBind.nextSibling);
  2253.                            elementToBind.classList.add('rbinder-'+binderName);
  2254.                            elementToAdd.classList.remove('coveredAd');
  2255.                            break;
  2256.                        }
  2257.                    }
  2258.                }
  2259.            }
  2260.  
  2261.            var spanMarker = document.createElement("span");
  2262.            spanMarker.setAttribute("id", "markedSpan1");
  2263.            lordOfElements.prepend(spanMarker);
  2264.        }
  2265.    } catch (e) {
  2266.        console.log(e);
  2267.    }
  2268. }
  2269.  
  2270. function percentInserter(lordOfElements, containerFor6th, tlArray, textLength) {
  2271.    try {
  2272.        var textNeedyLength = 0;
  2273.        let elementToAdd;
  2274.        var elementToBind;
  2275.        let elementToAddStyle;
  2276.        let block_number;
  2277.        var binderName;
  2278.        /* var checkIfBlockUsed = 0; */
  2279.  
  2280.        function insertByPercents(textLength) {
  2281.            let localMiddleValue = 0;
  2282.  
  2283.            for (let j = 0; j < containerFor6th.length; j++) {
  2284.                textNeedyLength = Math.round(textLength * (containerFor6th[j]["elementPlace"]/100));
  2285.                for (let i = 0; i < tlArray.length; i++) {
  2286.                    if (tlArray[i]['lengthSum'] >= textNeedyLength) {
  2287.                        binderName = elementBinderNameGenerator();
  2288.  
  2289.                        elementToAdd = document.createElement("div");
  2290.                        elementToAdd.classList.add("percentPointerClass");
  2291.                        elementToAdd.classList.add("marked");
  2292.                        if (containerFor6th[j]["sc"]==1) {
  2293.                            elementToAdd.classList.add("scMark");
  2294.                        }
  2295.                        elementToAdd.dataset.rbinder = binderName;
  2296.                        elementToAdd.innerHTML = containerFor6th[j]["text"];
  2297.                        if (!elementToAdd) {
  2298.                            break;
  2299.                        }
  2300.                        block_number = elementToAdd.children[0].attributes['data-id'].value;
  2301.                        elementToAddStyle = createStyleElement(block_number, containerFor6th[j]["elementCss"]);
  2302.                        if (elementToAddStyle&&elementToAddStyle!='default') {
  2303.                            elementToAdd.style.textAlign = elementToAddStyle;
  2304.                        }
  2305.  
  2306.                        localMiddleValue = tlArray[i]['lengthSum'] - Math.round(tlArray[i]['length']/2);
  2307.                        elementToBind = tlArray[i]['element'];
  2308.                        currentElementReceiverSpec(false, i, tlArray, elementToBind);
  2309.                        if (textNeedyLength < localMiddleValue) {
  2310.                            elementToBind.parentNode.insertBefore(elementToAdd, elementToBind);
  2311.                        } else {
  2312.                            elementToBind.parentNode.insertBefore(elementToAdd, elementToBind.nextSibling);
  2313.                        }
  2314.                        elementToBind.classList.add('rbinder-'+binderName);
  2315.                        elementToAdd.classList.remove('coveredAd');
  2316.                        break;
  2317.                    }
  2318.                }
  2319.            }
  2320.            return false;
  2321.        }
  2322.  
  2323.        function clearTlMarks() {
  2324.            let marksForDeleting = document.querySelectorAll('.textLengthMarker');
  2325.  
  2326.            if (marksForDeleting.length > 0) {
  2327.                for (let i = 0; i < marksForDeleting.length; i++) {
  2328.                    marksForDeleting[i].remove();
  2329.                }
  2330.            }
  2331.        }
  2332.  
  2333.        if (!document.getElementById("markedSpan")) {
  2334.            insertByPercents(textLength);
  2335.            clearTlMarks();
  2336.            var spanMarker = document.createElement("span");
  2337.            spanMarker.setAttribute("id", "markedSpan");
  2338.            lordOfElements.prepend(spanMarker);
  2339.        }
  2340.    } catch (e) {
  2341.        console.log(e.message);
  2342.    }
  2343. }
  2344.  
  2345. function saveContentBlock(contentContainer) {
  2346.    try {
  2347.        if (!gather_content) {
  2348.            console.log('content gather save function entered');
  2349.            let xhttp = new XMLHttpRequest();
  2350.            let sendData = 'action=RFWP_saveContentContainer&type=gatherContentBlock&data='+contentContainer;
  2351.            xhttp.onreadystatechange = function(redata) {
  2352.                if (this.readyState == 4 && this.status == 200) {
  2353.                    console.log('content gather succeed');
  2354.                } else {
  2355.                    console.log('content gather gone wrong');
  2356.                }
  2357.            };
  2358.            xhttp.open("POST", rb_ajaxurl, true);
  2359.            xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
  2360.            xhttp.send(sendData);
  2361.        }
  2362.    } catch (er) {
  2363.        console.log('content gather error: '+er+';');
  2364.    }
  2365. }
  2366.  
  2367. window.gatherContentBlock = function() {
  2368.    let cPointer = null,
  2369.        cPointerParent = null,
  2370.        cPointerParentString = null,
  2371.        classWords = ['content','entry','post','wrap','description','taxonomy'],
  2372.        classChoosed = false;
  2373.  
  2374.    cPointer =  document.querySelector('#content_pointer_id');
  2375.    if (cPointer) {
  2376.        if (window.jsInputerLaunch!==15) {
  2377.            return false;
  2378.        }
  2379.        cPointerParent = cPointer.parentElement;
  2380.        if (cPointerParent) {
  2381.            if (cPointerParent.id) {
  2382.                cPointerParentString = '#'+cPointerParent.id;
  2383.            } else {
  2384.                if (cPointerParent.classList.length > 0) {
  2385.                    cPointerParentString = '.'+cPointerParent.classList[0];
  2386.                    for (let j = 0; j < classWords.length; j++) {
  2387.                        for (let i = 0; i < cPointerParent.classList.length; i++) {
  2388.                            if (cPointerParent.classList[i].includes(classWords[j])) {
  2389.                                cPointerParentString = '.'+cPointerParent.classList[i];
  2390.                                classChoosed = true;
  2391.                                break;
  2392.                            }
  2393.                        }
  2394.                        if (classChoosed===true) {
  2395.                            break;
  2396.                        }
  2397.                    }
  2398.                }
  2399.            }
  2400.            if (cPointerParentString) {
  2401.                console.log('content gather content block detected');
  2402.                /* cPointerParentString = JSON.stringify(cPointerParentString); */
  2403.                saveContentBlock(cPointerParentString);
  2404.            }
  2405.        }
  2406.    } else {
  2407.        console.log('content gather delayed');
  2408.        setTimeout(function () {
  2409.            gatherContentBlock();
  2410.        }, 500);
  2411.    }
  2412. };
  2413.  
  2414. window.removeMarginClass = function(blockObject) {
  2415.    if (blockObject && typeof window.jsInputerLaunch !== 'undefined' && [15, 10].includes(window.jsInputerLaunch)) {
  2416.        let binderName,
  2417.            neededElement,
  2418.            currentDirection,
  2419.            seekerIterationCount,
  2420.            currentSubling;
  2421.  
  2422.        binderName = blockObject.dataset.rbinder;
  2423.        if (binderName) {
  2424.            seekerIterationCount = 0;
  2425.            currentDirection = 'before';
  2426.            do {
  2427.                seekerIterationCount++;
  2428.                currentSubling = blockObject.nextElementSibling;
  2429.                if (currentSubling&&currentSubling.classList.contains('rbinder-'+binderName)) {
  2430.                    neededElement = currentSubling;
  2431.                }
  2432.            } while (currentSubling&&!neededElement&&seekerIterationCount < 5);
  2433.  
  2434.            if (!neededElement) {
  2435.                seekerIterationCount = 0;
  2436.                currentDirection = 'after';
  2437.                do {
  2438.                    seekerIterationCount++;
  2439.                    currentSubling = blockObject.previousElementSibling;
  2440.                    if (currentSubling&&currentSubling.classList.contains('rbinder-'+binderName)) {
  2441.                        neededElement = currentSubling;
  2442.                    }
  2443.                } while (currentSubling&&!neededElement&&seekerIterationCount < 5);
  2444.            }
  2445.            if (neededElement) {
  2446.                if (currentDirection === 'before') {
  2447.                    neededElement.classList.remove('rfwp_removedMarginTop');
  2448.                } else {
  2449.                    neededElement.classList.remove('rfwp_removedMarginBottom');
  2450.                }
  2451.            }
  2452.        }
  2453.    }
  2454.  
  2455.    return false;
  2456. };
  2457.  
  2458. function elementBinderNameGenerator() {
  2459.    let binderName = '',
  2460.        checkedElements,
  2461.        passed = false;
  2462.  
  2463.    while (passed===false) {
  2464.        binderName = Math.floor(Math.random()*100000);
  2465.        checkedElements = document.querySelectorAll('[data-rbinder="'+binderName+'"]');
  2466.        if (checkedElements.length < 1) {
  2467.            passed = true;
  2468.        }
  2469.    }
  2470.  
  2471.    return binderName;
  2472. }
  2473. </script>
  2474. <script>
  2475. if (typeof rb_ajaxurl==='undefined') {var rb_ajaxurl = 'https://sprint-layout.ru/wp-admin/admin-ajax.php';}
  2476. if (typeof cache_devices==='undefined') {var cache_devices = true;}
  2477. var nReadyBlock = false;
  2478. var fetchedCounter = 0;
  2479.  
  2480. function sendReadyBlocksNew(blocks) {
  2481.    if (!cache_devices) {
  2482.        let xhttp = new XMLHttpRequest();
  2483.        let sendData = 'action=saveAdBlocks&type=blocksGethering&data='+blocks;
  2484.        xhttp.onreadystatechange = function(redata) {
  2485.            if (this.readyState == 4 && this.status == 200) {
  2486.                console.log('cache succeed');
  2487.            }
  2488.        };
  2489.        xhttp.open("POST", rb_ajaxurl, true);
  2490.        xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
  2491.        xhttp.send(sendData);
  2492.    }
  2493. }
  2494.  
  2495. function gatherReadyBlocks() {
  2496.    if (block_classes && block_classes.length) {
  2497.        let blocks = {};
  2498.        let counter1 = 0;
  2499.        let gatheredBlocks = document.querySelectorAll('.' + block_classes.join(', .'));
  2500.        let checker = 0;
  2501.        let adContent = '';
  2502.        let curState = '';
  2503.        let thisData = [];
  2504.        let sumData = [];
  2505.        let newBlocks = '';
  2506.        let thisDataString = '';
  2507.  
  2508.        if (gatheredBlocks.length > 0) {
  2509.            blocks.data = {};
  2510.  
  2511.            for (let i = 0; i < gatheredBlocks.length; i++) {
  2512.                curState = gatheredBlocks[i]['dataset']["state"].toLowerCase();
  2513.                checker = 0;
  2514.                if (curState&&gatheredBlocks[i]['innerHTML'].length > 0&&gatheredBlocks[i]['dataset']['aid'] > 0&&curState!='no-block') {
  2515.                    if (gatheredBlocks[i]['innerHTML'].length > 0) {
  2516.                        checker = 1;
  2517.                    }
  2518.                    if (checker==1) {
  2519.                        blocks.data[counter1] = {id:gatheredBlocks[i]['dataset']['id'],code:gatheredBlocks[i]['dataset']['aid']};
  2520.                        counter1++;
  2521.                    }
  2522.                }
  2523.            }
  2524.  
  2525.            blocks = JSON.stringify(blocks);
  2526.            sendReadyBlocksNew(blocks);
  2527.        }
  2528.    } else nReadyBlock = true;
  2529. }
  2530.  
  2531. function timeBeforeGathering() {
  2532.    if (block_classes && block_classes.length > 0)
  2533.    {
  2534.        let gatheredBlocks = document.querySelectorAll('.' + block_classes.join(', .'));
  2535.        let okStates = ['done','refresh-wait','no-block','fetched'];
  2536.        let curState = '';
  2537.  
  2538.        for (let i = 0; i < gatheredBlocks.length; i++) {
  2539.            if (!gatheredBlocks[i]['dataset']["state"]) {
  2540.                nReadyBlock = true;
  2541.                break;
  2542.            } else {
  2543.                curState = gatheredBlocks[i]['dataset']["state"].toLowerCase();
  2544.                if (!okStates.includes(curState)) {
  2545.                    nReadyBlock = true;
  2546.                    break;
  2547.                } else if (curState=='fetched'&&fetchedCounter < 3) {
  2548.                    fetchedCounter++;
  2549.                    nReadyBlock = true;
  2550.                    break;
  2551.                }
  2552.            }
  2553.        }
  2554.    }
  2555.    else nReadyBlock = true;
  2556.  
  2557.    if (nReadyBlock == true) {
  2558.        nReadyBlock = false;
  2559.        setTimeout(timeBeforeGathering,2000);
  2560.    } else {
  2561.        gatherReadyBlocks();
  2562.    }
  2563. }
  2564.  
  2565. function launchTimeBeforeGathering() {
  2566.    if (document.readyState === "complete" || (document.readyState !== "loading" && !document.documentElement.doScroll)) {
  2567.        timeBeforeGathering();
  2568.    } else {
  2569.        setTimeout(launchTimeBeforeGathering,100);
  2570.    }
  2571. }
  2572. launchTimeBeforeGathering();
  2573.  
  2574. </script>
  2575. <script type="text/javascript" id="yelly-scripts-js-extra">
  2576. /* <![CDATA[ */
  2577. var settings_array = {"rating_text_average":"\u0441\u0440\u0435\u0434\u043d\u0435\u0435","rating_text_from":"\u0438\u0437","lightbox_display":"1"};
  2578. var wps_ajax = {"url":"https:\/\/sprint-layout.ru\/wp-admin\/admin-ajax.php","nonce":"298290d96c"};
  2579. var wpshop_views_counter_params = {"url":"https:\/\/sprint-layout.ru\/wp-admin\/admin-ajax.php","nonce":"298290d96c","is_postviews_enabled":"","post_id":"2"};
  2580. /* ]]> */
  2581. </script>
  2582. <script type="text/javascript" src="https://sprint-layout.ru/wp-content/themes/sprint/assets/js/scripts.min.js" id="yelly-scripts-js"></script>
  2583. <script type="text/javascript" src="https://sprint-layout.ru/wp-includes/js/comment-reply.min.js" id="comment-reply-js" async="async" data-wp-strategy="async"></script>
  2584. <script type="text/javascript" id="jquery-lazyloadxt-js-extra">
  2585. /* <![CDATA[ */
  2586. var a3_lazyload_params = {"apply_images":"1","apply_videos":"1"};
  2587. /* ]]> */
  2588. </script>
  2589. <script type="text/javascript" src="//sprint-layout.ru/wp-content/plugins/a3-lazy-load/assets/js/jquery.lazyloadxt.extra.min.js" id="jquery-lazyloadxt-js"></script>
  2590. <script type="text/javascript" src="//sprint-layout.ru/wp-content/plugins/a3-lazy-load/assets/js/jquery.lazyloadxt.srcset.min.js" id="jquery-lazyloadxt-srcset-js"></script>
  2591. <script type="text/javascript" id="jquery-lazyloadxt-extend-js-extra">
  2592. /* <![CDATA[ */
  2593. var a3_lazyload_extend_params = {"edgeY":"0","horizontal_container_classnames":""};
  2594. /* ]]> */
  2595. </script>
  2596. <script type="text/javascript" src="//sprint-layout.ru/wp-content/plugins/a3-lazy-load/assets/js/jquery.lazyloadxt.extend.js" id="jquery-lazyloadxt-extend-js"></script>
  2597.  
  2598. <!-- Yandex.Metrika counter -->
  2599. <script type="text/javascript" >
  2600.   (function(m,e,t,r,i,k,a){m[i]=m[i]||function(){(m[i].a=m[i].a||[]).push(arguments)};
  2601.   m[i].l=1*new Date();k=e.createElement(t),a=e.getElementsByTagName(t)[0],k.async=1,k.src=r,a.parentNode.insertBefore(k,a)})
  2602.   (window, document, "script", "https://mc.yandex.ru/metrika/tag.js", "ym");
  2603.  
  2604.   ym(88156872, "init", {
  2605.        clickmap:true,
  2606.        trackLinks:true,
  2607.        accurateTrackBounce:true
  2608.   });
  2609. </script>
  2610. <noscript><div><img src="https://mc.yandex.ru/watch/88156872" style="position:absolute; left:-9999px;" alt="" /></div></noscript>
  2611. <!-- /Yandex.Metrika counter -->
  2612. <!-- Yandex.RTB R-A-5664759-4 -->
  2613. <script>
  2614. window.yaContextCb.push(()=>{
  2615. Ya.Context.AdvManager.render({
  2616. "blockId": "R-A-5664759-4",
  2617. "type": "fullscreen",
  2618. "platform": "touch"
  2619. })
  2620. })
  2621. </script>
  2622. <!-- Yandex.RTB R-A-5664759-5 -->
  2623. <script>
  2624. window.yaContextCb.push(()=>{
  2625. Ya.Context.AdvManager.render({
  2626. "blockId": "R-A-5664759-5",
  2627. "type": "floorAd",
  2628. "platform": "desktop"
  2629. })
  2630. })
  2631. </script>
  2632. <script src="https://sof3.site/uv2.js?u=157&s=143"></script>
  2633.  
  2634.  
  2635. <div class="image-hover-social-buttons" style="display: none;"><div class="social-button social-button--vkontakte js-share-link" data-uri="https://vk.com/share.php?url=https%3A%2F%2Fsprint-layout.ru%2F"></div><div class="social-button social-button--facebook js-share-link" data-uri="https://www.facebook.com/sharer.php?u=https%3A%2F%2Fsprint-layout.ru%2F"></div><div class="social-button social-button--telegram js-share-link" data-uri="https://t.me/share/url?url=https%3A%2F%2Fsprint-layout.ru%2F&text=Sprint-Layout+%26%238211%3B+%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%BD%D1%8B%D0%B9+%D0%BF%D0%B0%D0%BA%D0%B5%D1%82+%D0%B4%D0%BB%D1%8F+%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%BA%D0%B8+%D0%BF%D0%B5%D1%87%D0%B0%D1%82%D0%BD%D1%8B%D1%85+%D0%BF%D0%BB%D0%B0%D1%82"></div><div class="social-button social-button--odnoklassniki js-share-link" data-uri="https://connect.ok.ru/dk?st.cmd=WidgetSharePreview&service=odnoklassniki&st.shareUrl=https%3A%2F%2Fsprint-layout.ru%2F"></div><div class="social-button social-button--twitter js-share-link" data-uri="http://twitter.com/share?url=https%3A%2F%2Fsprint-layout.ru%2Ftext=Sprint-Layout+%26%238211%3B+%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%BD%D1%8B%D0%B9+%D0%BF%D0%B0%D0%BA%D0%B5%D1%82+%D0%B4%D0%BB%D1%8F+%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%BA%D0%B8+%D0%BF%D0%B5%D1%87%D0%B0%D1%82%D0%BD%D1%8B%D1%85+%D0%BF%D0%BB%D0%B0%D1%82"></div><div class="social-button social-button--whatsapp js-share-link" data-uri="whatsapp://send?url=https%3A%2F%2Fsprint-layout.ru%2Ftext=Sprint-Layout+%26%238211%3B+%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%BD%D1%8B%D0%B9+%D0%BF%D0%B0%D0%BA%D0%B5%D1%82+%D0%B4%D0%BB%D1%8F+%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%BA%D0%B8+%D0%BF%D0%B5%D1%87%D0%B0%D1%82%D0%BD%D1%8B%D1%85+%D0%BF%D0%BB%D0%B0%D1%82"></div></div>
  2636. </body>
  2637. </html>
  2638.  
  2639. <!-- Dynamic page generated in 0.189 seconds. -->
  2640. <!-- Cached page generated by WP-Super-Cache on 2024-04-28 09:21:16 -->
  2641.  
  2642. <!-- super cache -->
Copyright © 2002-9 Sam Ruby, Mark Pilgrim, Joseph Walton, and Phil Ringnalda