<?xml version='1.0' encoding='UTF-8'?>
<rss version='2.0'>
	<channel>
		<title>cotonti.com : дожились? или права пользователей</title>
		<link>https://www.cotonti.com</link>
		<description>Son konu mesajları</description>
		<generator>Cotonti</generator>
		<language>en</language>
		<pubDate>Fri, 17 Apr 2026 23:06:15 -0000</pubDate>

		<item>
			<title>esclkm</title>
			<description><![CDATA[знаю) но вдруг возможно обхитрить демона)]]></description>
			<pubDate>Cmt, 06 Şub 2010 02:50:04 -0000</pubDate>
			<link><![CDATA[https://www.cotonti.com/tr/forums?m=posts&q=5255&d=0#post22742]]></link>
		</item>
		<item>
			<title>Trustmaster</title>
			<description><![CDATA[Ты же знаешь, как сейчас делается: сначала проверка прав на категорию, потом выборка. Либо наоборот, сначала выборка элементов, а потом проверка прав (при этом проблема с количеством записей получается). Я привёл пример, как проверять права во время выборки. Но это на самом деле довольно медленно. Первый вариант (предварительная проверка) всех быстрее, но не всегда возможен.]]></description>
			<pubDate>Cmt, 06 Şub 2010 02:39:41 -0000</pubDate>
			<link><![CDATA[https://www.cotonti.com/tr/forums?m=posts&q=5255&d=0#post22741]]></link>
		</item>
		<item>
			<title>esclkm</title>
			<description><![CDATA[спасибо большое) <br />
реально ясность наступила.<br /><br /><b>Добавлено 15 Минут спустя:</b><br /><br />еще наглдяднее к ясности стало после такой таблицы:<br />
<pre class="code">
+------------+-------------------------------------+-------------+
| HEX | BIN | DEC |
+------------+-------------------------------------+-------------+
| 0x00000001 | 00000000 00000000 00000000 00000001 | 1 |
| 0x00000002 | 00000000 00000000 00000000 00000010 | 2 |
| 0x00000004 | 00000000 00000000 00000000 00000100 | 4 |
| 0x00000008 | 00000000 00000000 00000000 00001000 | 8 |
| 0x00000010 | 00000000 00000000 00000000 00010000 | 16 |
| 0x00000020 | 00000000 00000000 00000000 00100000 | 32 |
| 0x00000040 | 00000000 00000000 00000000 01000000 | 64 |
| 0x00000080 | 00000000 00000000 00000000 10000000 | 128 |
| 0x00000100 | 00000000 00000000 00000001 00000000 | 256 | </pre>
<br />
но табица прав у нас по большому счету уже загружена в массив, то можем ли мы сокраситить сие дейстивие<br />
IN ({$groupids}) AND a.auth_rights &amp; {$mn['R']} = {$mn['R']}<br />
в самом запросе?]]></description>
			<pubDate>Cmt, 06 Şub 2010 01:07:41 -0000</pubDate>
			<link><![CDATA[https://www.cotonti.com/tr/forums?m=posts&q=5255&d=0#post22739]]></link>
		</item>
		<item>
			<title>Trustmaster</title>
			<description><![CDATA[Я уточнил:<br />
<div class="highlight"><pre class="mysql">AND a.auth_rights &amp; {$mn&#091;'R'&#093;} = {$mn&#091;'R'&#093;}</pre></div>
Это и есть наложение битовой маски на число auth_rights. Неплохо бы почитать <a href="http://ru.wikipedia.org/wiki/%D0%91%D0%B8%D1%82%D0%BE%D0%B2%D1%8B%D0%B5_%D0%BE%D0%BF%D0%B5%D1%80%D0%B0%D1%86%D0%B8%D0%B8" rel="nofollow">что-нибудь</a>. Приведу простой пример. Пусть у нас всего 4 разряда используется и auth_rights = 1011. Если $mn['R'] == 1 == 0001, а $mn['A'] == 4 == 0100, то 1011 &amp; 0001 == 0001, а вот 1011 &amp; 0100 == 0000.<br />
<br />
А вот права надо брать по объединению групп, а не по главной или пересечению.]]></description>
			<pubDate>Cmt, 06 Şub 2010 00:54:41 -0000</pubDate>
			<link><![CDATA[https://www.cotonti.com/tr/forums?m=posts&q=5255&d=0#post22736]]></link>
		</item>
		<item>
			<title>esclkm</title>
			<description><![CDATA[теперь вот это часть прошу пояснить<br />
 AND a.auth_rights &amp; 1 = 1<br /><br /><b>Добавлено 3 часа 29 Минут спустя:</b><br /><br />и насколько я помню - у нас права читаются по основной группе а не по всем. или ошибаюсь?]]></description>
			<pubDate>Cum, 05 Şub 2010 16:24:03 -0000</pubDate>
			<link><![CDATA[https://www.cotonti.com/tr/forums?m=posts&q=5255&d=0#post22708]]></link>
		</item>
		<item>
			<title>Trustmaster</title>
			<description><![CDATA[<blockquote><a href="https://www.cotonti.com/forums.php?m=posts&amp;p=22697#22697">#</a> <strong>esclkm :</strong>
стоп.. стоп.. начало я впринципе освоил и сам когда копаллся в этой функции...<br />
а теперь пример если можно с sql (вот это для меня загадка - начало то я понял давно)))<br />
например выборку техже новостей<br />
ну нас есть 2 подкатегории av - доступная для всех nv - недоступная.<br />
как сделать запрос чтобы бралось то что надо)<br />
<br />
<strong>Добавлено 3 Минуты спустя:</strong><br />
<br />
ну или комментариии к только доступным страницам. с учетом полученныз знаний?<br />
или проще занарее просчитать возможные значение - где есть чтение?<br />
</blockquote>
Допустим, нам известны $groupids пользователя и $c категории, тогда:<br />
<div class="highlight"><pre class="mysql">SELECT * FROM
	sed_pages AS pg
		LEFT JOIN sed_auth AS a
			ON (a.auth_code = 'page' AND a.auth_option = '{$c}')
	WHERE
		pg.page_cat = '{$c}' AND a.auth_groupid IN ({$groupids}) AND a.auth_rights &amp; {$mn&#091;'R'&#093;} = {$mn&#091;'R'&#093;}
	GROUP BY pg.page_id;</pre></div>
Но надо сказать, запрос довольно тяжёлый для базы.]]></description>
			<pubDate>Cum, 05 Şub 2010 16:19:39 -0000</pubDate>
			<link><![CDATA[https://www.cotonti.com/tr/forums?m=posts&q=5255&d=0#post22707]]></link>
		</item>
		<item>
			<title>Sergey</title>
			<description><![CDATA[Это как раз и обозначает, что в таблице sed_pages я добавил поле page_rights в котором и записываю код доступа к строке. Обозначив соответственно биты, как нам надо, можно и будет производить такую выборку. <br />
<br />
 Однако в котонти осуществлен только групповой доступ к категории. Для этого надо сформировать по правам доступа некоторый массив допусти $all_cat,  в котором будут перечислены все категории где данный юзер может читать страницы (имеет нужное право доступа). Затем, этот массив превратить в строку типа Len_cat=cat1,cat2,...catn. в MySQL есть замечательная функция <pre class="code">FIND_IN_SET(str,strlist) 
Возвращает значение от 1 до N, 
если строка str присутствует в списке strlist, состоящем из N подстрок. 
Список строк представляет собой строку, состоящую из подстрок, разделенных символами `,'. 
Если первый аргумент представляет собой строку констант, 
а второй является столбцом типа SET, функция FIND_IN_SET() 
оптимизируется для использования двоичной арифметики! Возвращает 0, 
если str отсутствует в списке strlist или если strlist является пустой строкой. 
Если один из аргументов равен NULL, возвращается 0. 
Данная функция не будет корректно работать, 
если первый аргумент содержит символ `,':</pre> в strlist загоняем Len_cat, а str наше поле page_cat . Это я так гипотетически. Следует принять во внимание, что возвращает номер cat из Len_cat<br /><br /><b>Добавлено 17 Минут спустя:</b><br /><br />Кстати в функции function sed_auth($area, $option, $mask = 'RWA') есть замечательный фрагмент:<div class="highlight"><pre class="php">			if(is_array($usr&#091;'auth'&#093;&#091;$area&#093;))
			{
				foreach($usr&#091;'auth'&#093;&#091;$area&#093; as $k =&gt; $g)
				{
					$cnt += (($g &amp; $mn&#091;$ml&#093;) == $mn&#091;$ml&#093;);
				}
			}
</pre></div> где как раз можно и подобрать эти категории $area.<br />
Как быть со всей толпой, соответственно и для толпы есть категория гость.]]></description>
			<pubDate>Cum, 05 Şub 2010 06:23:31 -0000</pubDate>
			<link><![CDATA[https://www.cotonti.com/tr/forums?m=posts&q=5255&d=0#post22698]]></link>
		</item>
		<item>
			<title>esclkm</title>
			<description><![CDATA[стоп.. стоп.. начало я впринципе освоил и сам когда копаллся в этой функции...<br />
а теперь пример если можно с sql (вот это для меня загадка - начало то я понял давно)))<br />
например выборку техже новостей<br />
ну нас есть 2 подкатегории av - доступная для всех nv - недоступная.<br />
как сделать запрос чтобы бралось то что надо)<br /><br /><b>Добавлено 3 Минуты спустя:</b><br /><br />ну или комментариии к только доступным страницам. с учетом полученныз знаний?<br />
или проще занарее просчитать возможные значение - где есть чтение?]]></description>
			<pubDate>Cum, 05 Şub 2010 05:55:36 -0000</pubDate>
			<link><![CDATA[https://www.cotonti.com/tr/forums?m=posts&q=5255&d=0#post22697]]></link>
		</item>
		<item>
			<title>Sergey</title>
			<description><![CDATA[Давайте рассмотрим мой вариант нашей функции sed_auth_getvalue из модуля functions.admin.php<br />
<div class="highlight"><pre class="php">
function mobil_auth_getvalue($mask)  
{
$mn&#091;'0'&#093; = 0;
$mn&#091;'R'&#093; = 1;
$mn&#091;'W'&#093; = 2;
$mn&#091;'L'&#093; = 2;
$mn&#091;'1'&#093; = 4;
$mn&#091;'2'&#093; = 8;
$mn&#091;'3'&#093; = 16;
$mn&#091;'4'&#093; = 32;
$mn&#091;'5'&#093; = 64;
$mn&#091;'A'&#093; = 128;

$masks = str_split($mask);

foreach($mn as $k =&gt; $v)
 {
 if (in_array($k, $masks)) { $res += $mn&#091;$k&#093;; }
 }
return($res);
}</pre></div> Что делает эта функция? Она берет пользовательское обозначение прав и превращает их в компактную форму. Например, $mask =RW, функция str_split превращает входное значение в массив состоящий из двух элементов R и W, другая функция in_array($k, $masks) ищет перебирая массив $mn ассоциативные коды в $masks. В нашем случае  это будут коды R и W со значениями $mn['R'] = 1; и $mn['W'] = 2; Найденные значения суммируются. Получится 3. Т.е. число 3 это есть битовое указание на  R и W. Обратите внимание, в функции есть и эквивалент $mn['W'] = 2; это $mn['L'] = 2;<br />
Теперь давайте выстроим массив $mn так:<br />
<br />
бит 1 $mn['R'] = 1;<br />
бит 2 $mn['W'] = 2;<br />
бит 3 $mn['1'] = 4;<br />
бит 4 $mn['2'] = 8;<br />
бит 5 $mn['3'] = 16;<br />
бит 6 $mn['4'] = 32;<br />
бит 7 $mn['5'] = 64;<br />
бит 8 $mn['A'] = 128;<br />
<br />
Для того, чтобы получить значение бита из сгруппированного  кода прав (записываемого в поле таблице для строки) необходимо проделать следующую операцию:<br />
$бит = (($код_прав &amp; $маска_бита(ов)) == $маска_бита(ов));<br />
<br />
$бит будет иметь, в такой операции два состояния: FALSE или TRUE. Следовательно если маска_бита (например) равна 2, то мы сразу выясним. может ли в данную  строку что-либо записано т.е. если W в е правах. Однако можно проверить и сумму прав, достаточно сложить нужные биты. Например RA (имеем право читать и администрировать) этот код будет = 1+128=129.<br />
В MySQL имеется и соответственная функция (6.3.6.1 Битовые функции) функция побитового сложения т.е. &amp; <br />
которая, как раз и предназначена для этих целей: выборке строк соответствующих функции побитового сложения, в нашем случае поиску строк с определенными правами. Эта функция выполняется на самом низком операционном уровне процессора, практически мгновенно. В 3 шага микропроцессора. Придумывать другой механизм, это значит увеличивать количество машинных кодов в сотни (тысячи раз) вместо 3. (я так гипотически, может и 2 шага, все в особенностях куда маска на какой регистр улетела, но это уже не нашего ума дела)]]></description>
			<pubDate>Cum, 05 Şub 2010 05:34:33 -0000</pubDate>
			<link><![CDATA[https://www.cotonti.com/tr/forums?m=posts&q=5255&d=0#post22695]]></link>
		</item>
		<item>
			<title>esclkm</title>
			<description><![CDATA[все это прекрасно... но расскажи: как обдъединить 2 таблицы?<br />
в тестовом виде я понимаю - но вот как сделать запрос... чтобы проверить есть ли у глуппы права на чтение, а не делать начала - проверку по группам, а потом IN()]]></description>
			<pubDate>Cum, 05 Şub 2010 04:10:21 -0000</pubDate>
			<link><![CDATA[https://www.cotonti.com/tr/forums?m=posts&q=5255&d=0#post22687]]></link>
		</item>
		<item>
			<title>Trustmaster</title>
			<description><![CDATA[Побитовые операции над байтами (0-255) - это не шаманство, а основы информатики. В случае с правами - это способ упаковки матрицы доступа.<br />
<br />
Существует две модели политики безопасности:<br />
<ol>
<li><strong>Избирательная политика безопасности.</strong> Как правило, реализуется с помощью матрицы доступа (МД). В такой матрице строки - это объекты, права доступа к которым предоставляются, а столбцы - субъекты, которым предоставляется доступ. На пересечении - права, которые доступны (в примитивном случае - это просто разрешение &quot;да/нет&quot;). Знаменитые ACL (Access Control Lists) - это та же самая МД. В Seditio используется МД, где объект - некая область на сайте, а субъект - это группа пользователей. В ячейках один байт, в котором сжаты все привилегии. Такая модель относительно компактна. Если мы реализуем доступ на уровне каждого пользователя, и на уровне каждого элемента таблиц, и расширяем набор возможных прав, то размер матрицы увеличивается многократно (а именно, в N_пользвателей x N_строк раз). И значительно падает скорость алгоритмов авторизации (предоставления доступа).</li>
<li><strong>Полномочная политика безопасности.</strong> Как правило, каждый объект в системе (категория, страница, форум) имеет свою метку критичности (число или токен), которая определяет важность информации. Каждый субъект имеет уровень прозрачности (число или токен), который определяет ширину полномочий. Если коротко, то субъект может получить доступ к объекту, если его уровень прозрачности не ниже метки важности объекта. Другое правило гласит, что субъект может изменять объект, если его текущий уровень безопасности (число от 0 до уровня прозрачности) не выше метки важности объекта. Это позволяет строить строгую иерархию при движении данных.</li>
</ol>
Реализация комбинированных систем авторизации - не такая уж простая задача алгоритмически, особенно если учесть, что объектов на крупных сайтах сотни тысяч и миллионы. Так что маханием шашкой тут не обойдёшься.<br />
<br />
Размышляя над этой проблемой, я однозначно отказался от расширения матрицы доступа (причина выше). Возможно &quot;уточнение&quot; имеющейся матрицы в индивидуальном порядке в качестве исключений (скажем, добавлять новые объекты и субъекты по явному требованию администратора), но тут тоже свои трудности с &quot;массовой&quot; обработкой данных для групп субъектов и объектов. Более интересной выглядит разработка системы, подобой той, что упоминает <strong>Sergey</strong>, однако меня пугает её сложность и громоздкость.]]></description>
			<pubDate>Cum, 05 Şub 2010 04:03:32 -0000</pubDate>
			<link><![CDATA[https://www.cotonti.com/tr/forums?m=posts&q=5255&d=0#post22686]]></link>
		</item>
		<item>
			<title>Sergey</title>
			<description><![CDATA[<blockquote><a href="https://www.cotonti.com/forums.php?m=posts&amp;p=22674#22674">#</a> <strong>Gunslinger :</strong>
<strong>Sergey</strong>, тоесть основная причина отказа с вашей точки зрения от такой наработки исключительно в сложности ее реализации? (просто уточняю правильно ли я понял)<br />
</blockquote> Скорее всего не в сложности, сколь в слепом копировании чужих успехов, но не заложенных ресурсов, а результатов текущего момента.<br />
<strong>Добавлено 4 Минуты спустя:</strong><br />
<br />
Правильно, что не поняли. Это мой, реальный проект, который я сейчас испытываю с правами на все и вся в системе. Действительно, размер программных модулей уже превышает размер движка.<br />
а вот выражение:<br />
<br />
$rights_r = 1; //Read - чтение<br />
$guest_read = (($guest_read &amp; $rights_r) ==$rights_r);<br />
<br />
<br />
есть стандартная операция получения права, когда код прав чего-либо маскируется маской соответствующего права, в данном случае, права на чтение отдельной страницы.]]></description>
			<pubDate>Per, 04 Şub 2010 23:58:11 -0000</pubDate>
			<link><![CDATA[https://www.cotonti.com/tr/forums?m=posts&q=5255&d=0#post22678]]></link>
		</item>
		<item>
			<title>esclkm</title>
			<description><![CDATA[не совсем понял - а почему мой вариант не сможет оное реализовать?<br />
<br />
и я не нашел позиции или ее не понял с налета - где идет чтение прав?]]></description>
			<pubDate>Per, 04 Şub 2010 23:54:16 -0000</pubDate>
			<link><![CDATA[https://www.cotonti.com/tr/forums?m=posts&q=5255&d=0#post22677]]></link>
		</item>
		<item>
			<title>Sergey</title>
			<description><![CDATA[По крайней мере мне не понятна и выборка у esclkm? Вот моя выборка с правами в листе<div class="highlight"><pre class="php">$guest_read = (isset($cfg&#091;'plugin'&#093;&#091;'userseditpage'&#093;&#091;'auth_user'&#093;))?$cfg&#091;'plugin'&#093;&#091;'userseditpage'&#093;&#091;'auth_user'&#093;:RIGHTS_EMPTY; //переходный переиод
			$guest_read = (($guest_read &amp; $rights_r) ==$rights_r);
			sed_die(empty($sed_cat&#091;$c&#093;&#091;'maker'&#093;) and !$usr&#091;'isadmin'&#093;);
			$id_el=$pag&#091;'page_id'&#093;;
			$link_code=$struc_link&#091;'structure_id'&#093;.':'.$pag&#091;'page_id'&#093;;
			$link_code_ex='-'.$struc_link&#091;'structure_id'&#093;.':'.$pag&#091;'page_id'&#093;;
			$link_code_want='+'.$struc_link&#091;'structure_id'&#093;.':'.$pag&#091;'page_id'&#093;;
			//echo $link_code.&quot;=link_code &lt;br/&gt;&quot;;
        
			$sql = sed_sql_query(&quot;SELECT COUNT(*)  FROM $db_pages
				WHERE (FIND_IN_SET('$c',page_cat)
				OR FIND_IN_SET('$c',page_cat_extending))
				AND (page_state=0 OR page_state=2)
				AND (page_id != $id_el)
				AND (NOT FIND_IN_SET('$link_code',page_cat_extending))
				AND (NOT FIND_IN_SET('$link_code_ex',page_cat_extending))
				AND (NOT FIND_IN_SET('$link_code_want',page_cat_extending))
				AND (page_ownerid = {$usr&#091;'id'&#093;}
				OR ((page_rights &amp; $rights_r)=$rights_r)
				OR IFNULL(NOT page_rights,('$guest_read')))&quot;);
				$totallines = sed_sql_result($sql, 0, 0); //echo &quot;totallines=&quot;.$totallines.&quot;&lt;br/&gt;&quot;;
				$sql = sed_sql_query(&quot;SELECT p.*, u.user_name &quot;.$join_ratings_columns.&quot;
				FROM $db_pages as p &quot;.$join_ratings_condition.&quot;
				LEFT JOIN $db_users AS u ON u.user_id=p.page_ownerid
				WHERE (FIND_IN_SET('$c',page_cat)
				OR FIND_IN_SET('$c',page_cat_extending))
				AND (page_state=0 OR page_state=2)
				AND (page_id != $id_el)
				AND (NOT FIND_IN_SET('$link_code',page_cat_extending))
				AND (NOT FIND_IN_SET('$link_code_ex',page_cat_extending))
				AND (NOT FIND_IN_SET('$link_code_want',page_cat_extending))
				AND (page_ownerid = {$usr&#091;'id'&#093;}
				OR ((page_rights &amp; $rights_r)=$rights_r)
				OR IFNULL(NOT page_rights,('$guest_read')))
				ORDER BY page_$s $w LIMIT $d,&quot;.$cfg&#091;'maxrowsperpage'&#093;);</pre></div>]]></description>
			<pubDate>Per, 04 Şub 2010 23:51:21 -0000</pubDate>
			<link><![CDATA[https://www.cotonti.com/tr/forums?m=posts&q=5255&d=0#post22676]]></link>
		</item>
		<item>
			<title>Gunslinger</title>
			<description><![CDATA[<strong>Sergey</strong>, тоесть основная причина отказа с вашей точки зрения от такой наработки исключительно в сложности ее реализации? (просто уточняю правильно ли я понял)]]></description>
			<pubDate>Per, 04 Şub 2010 23:39:46 -0000</pubDate>
			<link><![CDATA[https://www.cotonti.com/tr/forums?m=posts&q=5255&d=0#post22674]]></link>
		</item>
		<item>
			<title>Sergey</title>
			<description><![CDATA[Очень даже против. И вот почему, если переходить к расширению возможностей сotonti, например к системе продаж, к системе многопользовательского владения частями (например информации), придется делать нечто похожее на римское право <a href="http://www.allpravo.ru/library/doc2527p/instrum3503/item3604.html" rel="nofollow">http://www.allpravo.ru/library/doc2527p/instrum3503/item3604.html</a> владею и распоряжаюсь + наследую. Учитывая характер операции дублирования, то появляется право  дублирования. Т.е. фактически вся шкала прав уже занята. По крайней мере, я уже год, как проектирую такую систему. Конечно, это достигается плагинами, но система уже сделана правильно и позволяет применять всю возможную гумму прав на отдельные компоненты и информацию. Например, вы желаете подключить плагин, который предусматривает право платного его использования на ресурсе, следовательно, если вы оплатите работу этого плагина, то для вас будет выставлено право его распоряжения. Вы, решили продать, какую-то часть ресурса в аренду, вот вам право владения.]]></description>
			<pubDate>Per, 04 Şub 2010 23:25:14 -0000</pubDate>
			<link><![CDATA[https://www.cotonti.com/tr/forums?m=posts&q=5255&d=0#post22672]]></link>
		</item>
		<item>
			<title>Gunslinger</title>
			<description><![CDATA[Вот это было бы очень полезной доработкой. Запланированная модификация системы прав до возможности их выставлять по отдельному юзеру остается в силе?]]></description>
			<pubDate>Per, 04 Şub 2010 21:07:17 -0000</pubDate>
			<link><![CDATA[https://www.cotonti.com/tr/forums?m=posts&q=5255&d=0#post22664]]></link>
		</item>
		<item>
			<title>Sergeich</title>
			<description><![CDATA[Согласен.]]></description>
			<pubDate>Per, 04 Şub 2010 19:01:30 -0000</pubDate>
			<link><![CDATA[https://www.cotonti.com/tr/forums?m=posts&q=5255&d=0#post22656]]></link>
		</item>
		<item>
			<title>jcrush</title>
			<description><![CDATA[Двумя руками за!]]></description>
			<pubDate>Per, 04 Şub 2010 17:44:48 -0000</pubDate>
			<link><![CDATA[https://www.cotonti.com/tr/forums?m=posts&q=5255&d=0#post22655]]></link>
		</item>
		<item>
			<title>esclkm</title>
			<description><![CDATA[ис покон седа права пользователей абсолютно не поменялись.<br />
таже таблица теже значения - 1 - 255<br />
в практике плагино писательства - если честно это очень неудобно.<br />
обычно это свобится или постоянному sed_auth или запросу с IN<br />
и то и то я не считаю рациональным.<br />
А если надо прочитать права другой группы (пример плагин стена пользователей) тут вообще начинается романтика.<br />
может всетаки лучше эту таблицу упростить до вида<br />
tinyint и граф (R, W, A, D, 1, 2, 3, 4, 5) - 0 недоступно , 1 доступно...<br />
<br />
изначальная цель этого явления кратного 8(?) мне непонятна.]]></description>
			<pubDate>Per, 04 Şub 2010 17:39:29 -0000</pubDate>
			<link><![CDATA[https://www.cotonti.com/tr/forums?m=posts&q=5255&d=0#post22654]]></link>
		</item>
	</channel>
</rss>