From joel@textplus.com Mon Jun 6 21:20:14 2022 From: Joel Serrano To: sr-users-es@lists.kamailio.org Subject: Re: [SR-Users-ES] Consulta =?utf-8?q?Envi=C3=B3?= de comando en forma remota Date: Mon, 06 Jun 2022 12:19:43 -0700 Message-ID: In-Reply-To: MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============0248242951==" --===============0248242951== Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable +1 a lo que comenta David: Es mucho m=C3=A1s f=C3=A1cil (hablando de rapidez y recursos) para el sistema descartar un paquete a nivel de kernel que para la aplicaci=C3=B3n a nivel de usuario. Saludos!! On Mon, Jun 6, 2022 at 11:08 AM David Villasmil < david.villasmil.work(a)gmail.com> wrote: > quiz=C3=A1s un "exit;" es mejor aqu=C3=AD: > > if(src_ip!=3D192.168.224.184) { > > Y tambi=C3=A9n es recomendable que pongas una regla en iptables al menos. > > Regards, > > David Villasmil > email: david.villasmil.work(a)gmail.com > phone: +34669448337 > > > On Mon, Jun 6, 2022 at 4:13 PM damian wrote: > >> Gente, >> ya se encuentra funcionando, muchas gracias por toda la colaboraci=C3=B3n. >> >> La conf. qued=C3=B3 de la siguiente manera, por si alguno le interesa. >> >> disable_tcp=3Dno >> tcp_accept_no_cl=3Dyes >> >> listen=3Dtcp:eth0:8080 >> listen=3Dudp:eth0:5060 >> listen=3Dudp:127.0.0.1:5060 >> >> #####Modulos para Request Reload mtree##### >> loadmodule "xhttp.so" >> loadmodule "jsonrpcs.so" >> #sudo apt-get install kamailio-json-modules# >> loadmodule "json.so" >> ####### >> >> event_route[xhttp:request] { >> if!(dst_port=3D=3D8080) { >> xlog("L_NOTICE", "[XHTTP:REQUEST] $si FORBIDDEN! ***\n"); >> exit; >> } >> if(src_ip!=3D192.168.224.184) { >> xhttp_reply("403", "Forbidden", "text/html", >> "Not allowed from $si"); >> xlog("L_NOTICE", "[XHTTP:REQUEST] NOT ALLOWED FROM $si! ***\n"); >> exit; >> } >> if ($hu =3D~ "^/mtree") { >> $var(dbmtree) =3D$(rb{json.parse,db}); >> xlog("L_NOTICE", "[XHTTP:REQUEST] $si:$sp - db: $var(dbmtree) >> ACCEPTED ***\n"); >> $var(json_rpc)=3D'{"jsonrpc": "2.0", "method": "mtree.reload", >> "id": "$var(dbmtree)"}'; >> jsonrpc_exec($var(json_rpc)); >> xlog("L_NOTICE","jsonrpc response code: $jsonrpl(code) - the body >> is: $jsonrpl(body)\n"); >> xhttp_reply("200", "Forbidden", "text/html", >> "OK - [$si:$sp - db: >> $var(dbmtree)]"); >> >> } else { >> xhttp_reply("200", "OK", "text/html", >> "Wrong URL $hu"); >> xlog("L_NOTICE", "[XHTTP:REQUEST] WRONG URL $hu! ***\n"); >> } >> return; >> } >> >> >> Saludos. >> >> El lun, 6 jun 2022 a las 9:49, damian () escribi=C3= =B3: >> >>> Disculpen, encontr=C3=A9 el error porque el que no levantaba el puerto 80= 80, >>> Tenia en el archivo de configuraci=C3=B3n disable_tcp=3Dyes. >>> Ire por el camino del Request y ver=C3=A9 si me funciona. >>> >>> Saludos. >>> >>> El lun, 6 jun 2022 a las 9:41, damian () escribi= =C3=B3: >>> >>>> Eh intentado lo del event_route[xhttp:request] pero no logro que >>>> Kamailio escuche el puerto que configuro (80, 8080 o cualquier puerto que >>>> defina) para enviar el request via http. >>>> >>>> >>>> Tengo configurado: >>>> listen=3Dtcp:eth0:8080 >>>> listen=3Dudp:eth0:5060 >>>> >>>> Resultado. >>>> >>>> Listening on >>>> udp: 172.x.x.x:5060 >>>> udp: 127.0.0.1:5060 >>>> Aliases: >>>> udp: localhost:5060 >>>> udp: LAB-SERVER:5060 >>>> >>>> Solo me escucha el 5060. >>>> >>>> El s=C3=A1b, 4 jun 2022 a las 12:55, Jose Fco. Irles Dur=C3=A1 () >>>> escribi=C3=B3: >>>> >>>>> Otra opci=C3=B3n es que hagas un GET a un path espec=C3=ADfico en >>>>> el event_route[xhttp:request] y ah=C3=AD ejecutes lo que quieras, como = por >>>>> ejemplo un script local para hacer lo que quieras. >>>>> >>>>> El s=C3=A1b, 4 jun 2022 a las 15:13, Joel Serrano () >>>>> escribi=C3=B3: >>>>> >>>>>> Tambi=C3=A9n puedes usar el propio jsonrpcs_exec() y hacer el reload d= esde >>>>>> la config cuando te de la gana. >>>>>> >>>>>> On Fri, Jun 3, 2022 at 15:15 David Villasmil < >>>>>> david.villasmil.work(a)gmail.com> wrote: >>>>>> >>>>>>> Eso lo puedes hacer con un archivo de texto simple. Kamailio puede >>>>>>> monitorizar el archivo y recargarlo autom=C3=A1ticamente. >>>>>>> Si no, puedes hacer un un timer que dispare un trigger y recargarlo. >>>>>>> >>>>>>> On Fri, 3 Jun 2022 at 20:38, damian wrote: >>>>>>> >>>>>>>> Hola, buenas tardes. >>>>>>>> Tengo una duda, espero que puedan orientarme o ayudarme. >>>>>>>> Tengo montado un Sistema de Redirect Server con Kamailio, >>>>>>>> funcionando OK. >>>>>>>> Este server lee una tabla que sale de un MYSQL y con el modulo >>>>>>>> mtree la cargo en memoria. >>>>>>>> Cuando hago modificaicones en la DB refresco los datos en memoria >>>>>>>> con el comando: kamcmd mtree.reload mytabla. >>>>>>>> >>>>>>>> Ahora bien, hay alguna forma de que haga este reload en forma >>>>>>>> remota. es decir, no tener que conectarme al server por ssh y tirar = el >>>>>>>> comando localmente. >>>>>>>> Hay alguna posibilidad de que kamailio este escuchando y hacerle el >>>>>>>> request de reload? >>>>>>>> Si lo hay, cuentan con algun ejemplo que puede utilizar de >>>>>>>> referencia? >>>>>>>> >>>>>>>> Saludos. >>>>>>>> _______________________________________________ >>>>>>>> sr-users-es mailing list >>>>>>>> sr-users-es(a)lists.kamailio.org >>>>>>>> https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users-es >>>>>>>> >>>>>>> -- >>>>>>> Regards, >>>>>>> >>>>>>> David Villasmil >>>>>>> email: david.villasmil.work(a)gmail.com >>>>>>> phone: +34669448337 >>>>>>> _______________________________________________ >>>>>>> sr-users-es mailing list >>>>>>> sr-users-es(a)lists.kamailio.org >>>>>>> https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users-es >>>>>>> >>>>>> _______________________________________________ >>>>>> sr-users-es mailing list >>>>>> sr-users-es(a)lists.kamailio.org >>>>>> https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users-es >>>>>> >>>>> >>>>> >>>>> -- >>>>> Jose Fco. Irles Dur=C3=A1 >>>>> _______________________________________________ >>>>> sr-users-es mailing list >>>>> sr-users-es(a)lists.kamailio.org >>>>> https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users-es >>>>> >>>> _______________________________________________ >> sr-users-es mailing list >> sr-users-es(a)lists.kamailio.org >> https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users-es >> > _______________________________________________ > sr-users-es mailing list > sr-users-es(a)lists.kamailio.org > https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users-es > --===============0248242951== Content-Type: text/html Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="attachment.html" MIME-Version: 1.0 PGRpdiBkaXI9Imx0ciI+KzEgYSBsbyBxdWUgY29tZW50YSBEYXZpZDo8YnI+PGRpdj48YnI+PC9k aXY+PGRpdj5FcyBtdWNob8KgbcOhc8KgZsOhY2lsIChoYWJsYW5kbyBkZSByYXBpZGV6IHkgcmVj dXJzb3MpIHBhcmEgZWwgc2lzdGVtYSBkZXNjYXJ0YXIgdW4gcGFxdWV0ZSBhIG5pdmVsIGRlIGtl cm5lbCBxdWUgcGFyYSBsYSBhcGxpY2FjacOzbsKgYSBuaXZlbCBkZSB1c3VhcmlvLjwvZGl2Pjxk aXY+PGJyPjwvZGl2PjxkaXY+U2FsdWRvcyEhPC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj48YnI+ PC9kaXY+PC9kaXY+PGJyPjxkaXYgY2xhc3M9ImdtYWlsX3F1b3RlIj48ZGl2IGRpcj0ibHRyIiBj bGFzcz0iZ21haWxfYXR0ciI+T24gTW9uLCBKdW4gNiwgMjAyMiBhdCAxMTowOCBBTSBEYXZpZCBW aWxsYXNtaWwgJmx0OzxhIGhyZWY9Im1haWx0bzpkYXZpZC52aWxsYXNtaWwud29ya0BnbWFpbC5j b20iPmRhdmlkLnZpbGxhc21pbC53b3JrQGdtYWlsLmNvbTwvYT4mZ3Q7IHdyb3RlOjxicj48L2Rp dj48YmxvY2txdW90ZSBjbGFzcz0iZ21haWxfcXVvdGUiIHN0eWxlPSJtYXJnaW46MHB4IDBweCAw cHggMC44ZXg7Ym9yZGVyLWxlZnQ6MXB4IHNvbGlkIHJnYigyMDQsMjA0LDIwNCk7cGFkZGluZy1s ZWZ0OjFleCI+PGRpdiBkaXI9Imx0ciI+cXVpesOhcyB1biAmcXVvdDtleGl0OyZxdW90OyBlcyBt ZWpvciBhcXXDrTo8ZGl2Pjxicj48L2Rpdj48ZGl2PsKgIGlmKHNyY19pcCE9MTkyLjE2OC4yMjQu MTg0KSB7PGJyPjxkaXY+PGJyPjwvZGl2PjxkaXY+WSB0YW1iacOpbiBlcyByZWNvbWVuZGFibGUg cXVlIHBvbmdhcyB1bmEgcmVnbGEgZW4gaXB0YWJsZXMgYWwgbWVub3MuPC9kaXY+PGRpdj48YnIg Y2xlYXI9ImFsbCI+PGRpdj48ZGl2IGRpcj0ibHRyIj48ZGl2IGRpcj0ibHRyIj48ZGl2PlJlZ2Fy ZHMsPC9kaXY+PGRpdj48YnI+PC9kaXY+RGF2aWQgVmlsbGFzbWlsPGRpdj5lbWFpbDogPGEgaHJl Zj0ibWFpbHRvOmRhdmlkLnZpbGxhc21pbC53b3JrQGdtYWlsLmNvbSIgdGFyZ2V0PSJfYmxhbmsi PmRhdmlkLnZpbGxhc21pbC53b3JrQGdtYWlsLmNvbTwvYT48L2Rpdj48ZGl2PnBob25lOiArMzQ2 Njk0NDgzMzc8L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48YnI+PC9kaXY+PC9kaXY+PC9kaXY+PGJy PjxkaXYgY2xhc3M9ImdtYWlsX3F1b3RlIj48ZGl2IGRpcj0ibHRyIiBjbGFzcz0iZ21haWxfYXR0 ciI+T24gTW9uLCBKdW4gNiwgMjAyMiBhdCA0OjEzIFBNIGRhbWlhbiAmbHQ7PGEgaHJlZj0ibWFp bHRvOmNhc3NpZHlub0BnbWFpbC5jb20iIHRhcmdldD0iX2JsYW5rIj5jYXNzaWR5bm9AZ21haWwu Y29tPC9hPiZndDsgd3JvdGU6PGJyPjwvZGl2PjxibG9ja3F1b3RlIGNsYXNzPSJnbWFpbF9xdW90 ZSIgc3R5bGU9Im1hcmdpbjowcHggMHB4IDBweCAwLjhleDtib3JkZXItbGVmdDoxcHggc29saWQg cmdiKDIwNCwyMDQsMjA0KTtwYWRkaW5nLWxlZnQ6MWV4Ij48ZGl2IGRpcj0ibHRyIj48ZGl2Pkdl bnRlLMKgPC9kaXY+PGRpdj55YSBzZSBlbmN1ZW50cmEgZnVuY2lvbmFuZG8sIG11Y2hhcyBncmFj aWFzIHBvciB0b2RhIGxhIGNvbGFib3JhY2nDs24uPC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj5M YSBjb25mLiBxdWVkw7MgZGUgbGEgc2lndWllbnRlIG1hbmVyYSwgcG9yIHNpIGFsZ3VubyBsZSBp bnRlcmVzYS48L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2PmRpc2FibGVfdGNwPW5vPGJyPnRjcF9h Y2NlcHRfbm9fY2w9eWVzPGJyPjxicj5saXN0ZW49dGNwOmV0aDA6ODA4MDxicj5saXN0ZW49dWRw OmV0aDA6NTA2MDxicj5saXN0ZW49dWRwOjxhIGhyZWY9Imh0dHA6Ly8xMjcuMC4wLjE6NTA2MCIg dGFyZ2V0PSJfYmxhbmsiPjEyNy4wLjAuMTo1MDYwPC9hPjxicj48L2Rpdj48ZGl2Pjxicj48L2Rp dj48ZGl2PiMjIyMjTW9kdWxvcyBwYXJhIFJlcXVlc3QgUmVsb2FkIG10cmVlIyMjIyM8YnI+bG9h ZG1vZHVsZSAmcXVvdDt4aHR0cC5zbyZxdW90Ozxicj5sb2FkbW9kdWxlICZxdW90O2pzb25ycGNz LnNvJnF1b3Q7PGJyPiNzdWRvIGFwdC1nZXQgaW5zdGFsbCBrYW1haWxpby1qc29uLW1vZHVsZXMj PGJyPmxvYWRtb2R1bGUgJnF1b3Q7anNvbi5zbyZxdW90Ozxicj4jIyMjIyMjPGJyPjwvZGl2Pjxk aXY+PGJyPjwvZGl2PmV2ZW50X3JvdXRlW3hodHRwOnJlcXVlc3RdIHs8YnI+wqAgaWYhKGRzdF9w b3J0PT04MDgwKSB7PGJyPsKgIMKgIHhsb2coJnF1b3Q7TF9OT1RJQ0UmcXVvdDssICZxdW90O1tY SFRUUDpSRVFVRVNUXSAkc2kgRk9SQklEREVOISAqKipcbiZxdW90Oyk7PGJyPsKgIMKgIGV4aXQ7 PGJyPsKgIH08YnI+wqAgaWYoc3JjX2lwIT0xOTIuMTY4LjIyNC4xODQpIHs8YnI+wqAgwqAgwqAg wqAgeGh0dHBfcmVwbHkoJnF1b3Q7NDAzJnF1b3Q7LCAmcXVvdDtGb3JiaWRkZW4mcXVvdDssICZx dW90O3RleHQvaHRtbCZxdW90Oyw8YnI+wqAgwqAgwqAgwqAgwqAgwqAgJnF1b3Q7Jmx0O2h0bWwm Z3Q7Jmx0O2JvZHkmZ3Q7Tm90IGFsbG93ZWQgZnJvbSAkc2kmbHQ7L2JvZHkmZ3Q7Jmx0Oy9odG1s Jmd0OyZxdW90Oyk7PGJyPsKgIMKgIMKgIMKgIHhsb2coJnF1b3Q7TF9OT1RJQ0UmcXVvdDssICZx dW90O1tYSFRUUDpSRVFVRVNUXSBOT1QgQUxMT1dFRCBGUk9NICRzaSEgKioqXG4mcXVvdDspOzxi cj7CoCDCoCDCoCDCoCBleGl0Ozxicj4JfTxicj7CoCDCoCBpZiAoJGh1ID1+ICZxdW90O14vbXRy ZWUmcXVvdDspIHs8YnI+wqAgwqAgCSR2YXIoZGJtdHJlZSkgPSQocmJ7anNvbi5wYXJzZSxkYn0p Ozxicj7CoCDCoCDCoCDCoCB4bG9nKCZxdW90O0xfTk9USUNFJnF1b3Q7LCAmcXVvdDtbWEhUVFA6 UkVRVUVTVF0gJHNpOiRzcCDCoC0gZGI6ICR2YXIoZGJtdHJlZSkgQUNDRVBURUQgKioqXG4mcXVv dDspOzxicj7CoCDCoCDCoCDCoCAkdmFyKGpzb25fcnBjKT0mIzM5O3smcXVvdDtqc29ucnBjJnF1 b3Q7OiAmcXVvdDsyLjAmcXVvdDssICZxdW90O21ldGhvZCZxdW90OzogJnF1b3Q7bXRyZWUucmVs b2FkJnF1b3Q7LCAmcXVvdDtpZCZxdW90OzogJnF1b3Q7JHZhcihkYm10cmVlKSZxdW90O30mIzM5 Ozs8YnI+wqAgwqAgwqAgwqAganNvbnJwY19leGVjKCR2YXIoanNvbl9ycGMpKTs8YnI+wqAgwqAg wqAgwqAgeGxvZygmcXVvdDtMX05PVElDRSZxdW90OywmcXVvdDtqc29ucnBjIHJlc3BvbnNlIGNv ZGU6ICRqc29ucnBsKGNvZGUpIC0gdGhlIGJvZHkgaXM6ICRqc29ucnBsKGJvZHkpXG4mcXVvdDsp Ozxicj7CoCDCoCDCoCDCoCB4aHR0cF9yZXBseSgmcXVvdDsyMDAmcXVvdDssICZxdW90O0ZvcmJp ZGRlbiZxdW90OywgJnF1b3Q7dGV4dC9odG1sJnF1b3Q7LDxicj7CoCDCoCDCoCDCoCDCoCDCoCAm cXVvdDsmbHQ7aHRtbCZndDsmbHQ7Ym9keSZndDtPSyAtIFskc2k6JHNwIMKgLSBkYjogJHZhcihk Ym10cmVlKV0mbHQ7L2JvZHkmZ3Q7Jmx0Oy9odG1sJmd0OyZxdW90Oyk7PGJyPsKgIMKgIMKgIMKg IDxicj4JfSBlbHNlIHs8YnI+wqAgwqAgwqAgwqAgeGh0dHBfcmVwbHkoJnF1b3Q7MjAwJnF1b3Q7 LCAmcXVvdDtPSyZxdW90OywgJnF1b3Q7dGV4dC9odG1sJnF1b3Q7LDxicj7CoCDCoCDCoCDCoCDC oCDCoCAmcXVvdDsmbHQ7aHRtbCZndDsmbHQ7Ym9keSZndDtXcm9uZyBVUkwgJGh1Jmx0Oy9ib2R5 Jmd0OyZsdDsvaHRtbCZndDsmcXVvdDspOzxicj7CoCDCoCDCoCDCoCB4bG9nKCZxdW90O0xfTk9U SUNFJnF1b3Q7LCAmcXVvdDtbWEhUVFA6UkVRVUVTVF0gV1JPTkcgVVJMICRodSEgKioqXG4mcXVv dDspOzxicj7CoCDCoCB9PGJyPsKgIMKgIHJldHVybjs8YnI+fTxicj48ZGl2Pjxicj48L2Rpdj48 ZGl2Pjxicj48L2Rpdj48ZGl2PlNhbHVkb3MuPC9kaXY+PC9kaXY+PGJyPjxkaXYgY2xhc3M9Imdt YWlsX3F1b3RlIj48ZGl2IGRpcj0ibHRyIiBjbGFzcz0iZ21haWxfYXR0ciI+RWwgbHVuLCA2IGp1 biAyMDIyIGEgbGFzIDk6NDksIGRhbWlhbiAoJmx0OzxhIGhyZWY9Im1haWx0bzpjYXNzaWR5bm9A Z21haWwuY29tIiB0YXJnZXQ9Il9ibGFuayI+Y2Fzc2lkeW5vQGdtYWlsLmNvbTwvYT4mZ3Q7KSBl c2NyaWJpw7M6PGJyPjwvZGl2PjxibG9ja3F1b3RlIGNsYXNzPSJnbWFpbF9xdW90ZSIgc3R5bGU9 Im1hcmdpbjowcHggMHB4IDBweCAwLjhleDtib3JkZXItbGVmdDoxcHggc29saWQgcmdiKDIwNCwy MDQsMjA0KTtwYWRkaW5nLWxlZnQ6MWV4Ij48ZGl2IGRpcj0ibHRyIj48ZGl2PkRpc2N1bHBlbiwg ZW5jb250csOpIGVsIGVycm9yIHBvcnF1ZSBlbCBxdWUgbm8gbGV2YW50YWJhIGVsIHB1ZXJ0byA4 MDgwLCA8YnI+PC9kaXY+PGRpdj5UZW5pYSBlbiBlbCBhcmNoaXZvIGRlIGNvbmZpZ3VyYWNpw7Nu IGRpc2FibGVfdGNwPXllcy48L2Rpdj48ZGl2PklyZSBwb3IgZWwgY2FtaW5vIGRlbCBSZXF1ZXN0 IHkgdmVyw6kgc2kgbWUgZnVuY2lvbmEuPC9kaXY+PGRpdj48L2Rpdj48ZGl2Pjxicj48L2Rpdj48 ZGl2PlNhbHVkb3MuPGJyPjwvZGl2PjwvZGl2Pjxicj48ZGl2IGNsYXNzPSJnbWFpbF9xdW90ZSI+ PGRpdiBkaXI9Imx0ciIgY2xhc3M9ImdtYWlsX2F0dHIiPkVsIGx1biwgNiBqdW4gMjAyMiBhIGxh cyA5OjQxLCBkYW1pYW4gKCZsdDs8YSBocmVmPSJtYWlsdG86Y2Fzc2lkeW5vQGdtYWlsLmNvbSIg dGFyZ2V0PSJfYmxhbmsiPmNhc3NpZHlub0BnbWFpbC5jb208L2E+Jmd0OykgZXNjcmliacOzOjxi cj48L2Rpdj48YmxvY2txdW90ZSBjbGFzcz0iZ21haWxfcXVvdGUiIHN0eWxlPSJtYXJnaW46MHB4 IDBweCAwcHggMC44ZXg7Ym9yZGVyLWxlZnQ6MXB4IHNvbGlkIHJnYigyMDQsMjA0LDIwNCk7cGFk ZGluZy1sZWZ0OjFleCI+PGRpdiBkaXI9Imx0ciI+PGRpdj5FaCBpbnRlbnRhZG8gbG8gZGVsIGV2 ZW50X3JvdXRlW3hodHRwOnJlcXVlc3RdICBwZXJvIG5vIGxvZ3JvIHF1ZSBLYW1haWxpbyBlc2N1 Y2hlIGVsIHB1ZXJ0byBxdWUgY29uZmlndXJvICg4MCwgODA4MCBvIGN1YWxxdWllciBwdWVydG8g cXVlIGRlZmluYSnCoCBwYXJhIGVudmlhciBlbCByZXF1ZXN0IHZpYSBodHRwLjwvZGl2PjxkaXY+ PGJyPjwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+VGVuZ28gY29uZmlndXJhZG86PC9kaXY+PGRp dj5saXN0ZW49dGNwOmV0aDA6ODA4MDxicj5saXN0ZW49dWRwOmV0aDA6NTA2MDwvZGl2PjxkaXY+ PGJyPjwvZGl2PjxkaXY+UmVzdWx0YWRvLjxicj48L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2Pkxp c3RlbmluZyBvbiA8YnI+wqAgwqAgwqAgwqAgwqAgwqAgwqB1ZHA6IDE3Mi54LngueDo1MDYwPGJy PsKgIMKgIMKgIMKgIMKgIMKgIMKgdWRwOiA8YSBocmVmPSJodHRwOi8vMTI3LjAuMC4xOjUwNjAi IHRhcmdldD0iX2JsYW5rIj4xMjcuMC4wLjE6NTA2MDwvYT48YnI+QWxpYXNlczogPGJyPsKgIMKg IMKgIMKgIMKgIMKgIMKgdWRwOiBsb2NhbGhvc3Q6NTA2MDxicj7CoCDCoCDCoCDCoCDCoCDCoCDC oHVkcDogTEFCLVNFUlZFUjo1MDYwPGJyPjwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+U29sbyBt ZSBlc2N1Y2hhIGVsIDUwNjAuPGJyPjwvZGl2PjwvZGl2Pjxicj48ZGl2IGNsYXNzPSJnbWFpbF9x dW90ZSI+PGRpdiBkaXI9Imx0ciIgY2xhc3M9ImdtYWlsX2F0dHIiPkVsIHPDoWIsIDQganVuIDIw MjIgYSBsYXMgMTI6NTUsIEpvc2UgRmNvLiBJcmxlcyBEdXLDoSAoJmx0OzxhIGhyZWY9Im1haWx0 bzpqb3NlZnVAZ21haWwuY29tIiB0YXJnZXQ9Il9ibGFuayI+am9zZWZ1QGdtYWlsLmNvbTwvYT4m Z3Q7KSBlc2NyaWJpw7M6PGJyPjwvZGl2PjxibG9ja3F1b3RlIGNsYXNzPSJnbWFpbF9xdW90ZSIg c3R5bGU9Im1hcmdpbjowcHggMHB4IDBweCAwLjhleDtib3JkZXItbGVmdDoxcHggc29saWQgcmdi KDIwNCwyMDQsMjA0KTtwYWRkaW5nLWxlZnQ6MWV4Ij48ZGl2IGRpcj0ibHRyIj5PdHJhIG9wY2nD s24gZXMgcXVlIGhhZ2FzIHVuIEdFVCBhIHVuIHBhdGggZXNwZWPDrWZpY28gZW4gZWzCoGV2ZW50 X3JvdXRlW3hodHRwOnJlcXVlc3RdIHkgYWjDrSBlamVjdXRlcyBsbyBxdWUgcXVpZXJhcywgY29t byBwb3IgZWplbXBsbyB1biBzY3JpcHQgbG9jYWwgcGFyYSBoYWNlciBsbyBxdWUgcXVpZXJhcy48 L2Rpdj48YnI+PGRpdiBjbGFzcz0iZ21haWxfcXVvdGUiPjxkaXYgZGlyPSJsdHIiIGNsYXNzPSJn bWFpbF9hdHRyIj5FbCBzw6FiLCA0IGp1biAyMDIyIGEgbGFzIDE1OjEzLCBKb2VsIFNlcnJhbm8g KCZsdDs8YSBocmVmPSJtYWlsdG86am9lbEB0ZXh0cGx1cy5jb20iIHRhcmdldD0iX2JsYW5rIj5q b2VsQHRleHRwbHVzLmNvbTwvYT4mZ3Q7KSBlc2NyaWJpw7M6PGJyPjwvZGl2PjxibG9ja3F1b3Rl IGNsYXNzPSJnbWFpbF9xdW90ZSIgc3R5bGU9Im1hcmdpbjowcHggMHB4IDBweCAwLjhleDtib3Jk ZXItbGVmdDoxcHggc29saWQgcmdiKDIwNCwyMDQsMjA0KTtwYWRkaW5nLWxlZnQ6MWV4Ij48ZGl2 IGRpcj0iYXV0byI+VGFtYmnDqW4gcHVlZGVzIHVzYXIgZWwgcHJvcGlvIGpzb25ycGNzX2V4ZWMo KSB5IGhhY2VyIGVsIHJlbG9hZCBkZXNkZSBsYSBjb25maWcgY3VhbmRvIHRlIGRlIGxhIGdhbmEu wqA8L2Rpdj48ZGl2Pjxicj48ZGl2IGNsYXNzPSJnbWFpbF9xdW90ZSI+PGRpdiBkaXI9Imx0ciIg Y2xhc3M9ImdtYWlsX2F0dHIiPk9uIEZyaSwgSnVuIDMsIDIwMjIgYXQgMTU6MTUgRGF2aWQgVmls bGFzbWlsICZsdDs8YSBocmVmPSJtYWlsdG86ZGF2aWQudmlsbGFzbWlsLndvcmtAZ21haWwuY29t IiB0YXJnZXQ9Il9ibGFuayI+ZGF2aWQudmlsbGFzbWlsLndvcmtAZ21haWwuY29tPC9hPiZndDsg d3JvdGU6PGJyPjwvZGl2PjxibG9ja3F1b3RlIGNsYXNzPSJnbWFpbF9xdW90ZSIgc3R5bGU9Im1h cmdpbjowcHggMHB4IDBweCAwLjhleDtib3JkZXItbGVmdDoxcHggc29saWQgcmdiKDIwNCwyMDQs MjA0KTtwYWRkaW5nLWxlZnQ6MWV4Ij48ZGl2IGRpcj0iYXV0byI+RXNvIGxvIHB1ZWRlcyBoYWNl ciBjb24gdW4gYXJjaGl2byBkZSB0ZXh0byBzaW1wbGUuIEthbWFpbGlvIHB1ZWRlIG1vbml0b3Jp emFyIGVsIGFyY2hpdm8geSByZWNhcmdhcmxvIGF1dG9tw6F0aWNhbWVudGUuPC9kaXY+PGRpdiBk aXI9ImF1dG8iPlNpIG5vLCBwdWVkZXMgaGFjZXIgdW4gdW4gdGltZXIgcXVlIGRpc3BhcmUgdW4g dHJpZ2dlciB5IHJlY2FyZ2FybG8uPC9kaXY+PGRpdj48YnI+PGRpdiBjbGFzcz0iZ21haWxfcXVv dGUiPjxkaXYgZGlyPSJsdHIiIGNsYXNzPSJnbWFpbF9hdHRyIj5PbiBGcmksIDMgSnVuIDIwMjIg YXQgMjA6MzgsIGRhbWlhbiAmbHQ7PGEgaHJlZj0ibWFpbHRvOmNhc3NpZHlub0BnbWFpbC5jb20i IHRhcmdldD0iX2JsYW5rIj5jYXNzaWR5bm9AZ21haWwuY29tPC9hPiZndDsgd3JvdGU6PGJyPjwv ZGl2PjxibG9ja3F1b3RlIGNsYXNzPSJnbWFpbF9xdW90ZSIgc3R5bGU9Im1hcmdpbjowcHggMHB4 IDBweCAwLjhleDtib3JkZXItbGVmdDoxcHggc29saWQgcmdiKDIwNCwyMDQsMjA0KTtwYWRkaW5n LWxlZnQ6MWV4Ij48ZGl2IGRpcj0ibHRyIj48ZGl2PkhvbGEsIGJ1ZW5hcyB0YXJkZXMuPGJyPjwv ZGl2PjxkaXY+VGVuZ28gdW5hIGR1ZGEsIGVzcGVybyBxdWUgcHVlZGFuIG9yaWVudGFybWUgbyBh eXVkYXJtZS48YnI+PC9kaXY+PGRpdj5UZW5nbyBtb250YWRvIHVuIFNpc3RlbWEgZGUgUmVkaXJl Y3QgU2VydmVyIGNvbiBLYW1haWxpbywgZnVuY2lvbmFuZG8gT0suPGJyPjwvZGl2PjxkaXY+RXN0 ZSBzZXJ2ZXIgbGVlIHVuYSB0YWJsYSBxdWUgc2FsZSBkZSB1biBNWVNRTCB5IGNvbiBlbCBtb2R1 bG8gbXRyZWUgbGEgY2FyZ28gZW4gbWVtb3JpYS48L2Rpdj48ZGl2PkN1YW5kbyBoYWdvIG1vZGlm aWNhaWNvbmVzIGVuIGxhIERCIHJlZnJlc2NvIGxvcyBkYXRvcyBlbiBtZW1vcmlhIGNvbiBlbCBj b21hbmRvOiBrYW1jbWQgbXRyZWUucmVsb2FkIG15dGFibGEuPC9kaXY+PGRpdj48YnI+PC9kaXY+ PGRpdj5BaG9yYQogYmllbiwgaGF5IGFsZ3VuYSBmb3JtYSBkZSBxdWUgaGFnYSBlc3RlIHJlbG9h ZCBlbiBmb3JtYSByZW1vdGEuIGVzIApkZWNpciwgbm8gdGVuZXIgcXVlIGNvbmVjdGFybWUgYWwg c2VydmVyIHBvciBzc2ggeSB0aXJhciBlbCBjb21hbmRvIApsb2NhbG1lbnRlLjwvZGl2PjxkaXY+ SGF5IGFsZ3VuYSBwb3NpYmlsaWRhZCBkZSBxdWUga2FtYWlsaW8gZXN0ZSBlc2N1Y2hhbmRvIHkg aGFjZXJsZSBlbCByZXF1ZXN0IGRlIHJlbG9hZD88L2Rpdj48ZGl2PlNpIGxvIGhheSwgY3VlbnRh biBjb24gYWxndW4gZWplbXBsbyBxdWUgcHVlZGUgdXRpbGl6YXIgZGUgcmVmZXJlbmNpYT88L2Rp dj48ZGl2Pjxicj48L2Rpdj48ZGl2PlNhbHVkb3MuPC9kaXY+PC9kaXY+Cl9fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fPGJyPgpzci11c2Vycy1lcyBtYWlsaW5n IGxpc3Q8YnI+CjxhIGhyZWY9Im1haWx0bzpzci11c2Vycy1lc0BsaXN0cy5rYW1haWxpby5vcmci IHRhcmdldD0iX2JsYW5rIj5zci11c2Vycy1lc0BsaXN0cy5rYW1haWxpby5vcmc8L2E+PGJyPgo8 YSBocmVmPSJodHRwczovL2xpc3RzLmthbWFpbGlvLm9yZy9jZ2ktYmluL21haWxtYW4vbGlzdGlu Zm8vc3ItdXNlcnMtZXMiIHJlbD0ibm9yZWZlcnJlciIgdGFyZ2V0PSJfYmxhbmsiPmh0dHBzOi8v bGlzdHMua2FtYWlsaW8ub3JnL2NnaS1iaW4vbWFpbG1hbi9saXN0aW5mby9zci11c2Vycy1lczwv YT48YnI+CjwvYmxvY2txdW90ZT48L2Rpdj48L2Rpdj4tLSA8YnI+PGRpdiBkaXI9Imx0ciI+PGRp diBkaXI9Imx0ciI+PGRpdj5SZWdhcmRzLDwvZGl2PjxkaXY+PGJyPjwvZGl2PkRhdmlkIFZpbGxh c21pbDxkaXY+ZW1haWw6IDxhIGhyZWY9Im1haWx0bzpkYXZpZC52aWxsYXNtaWwud29ya0BnbWFp bC5jb20iIHRhcmdldD0iX2JsYW5rIj5kYXZpZC52aWxsYXNtaWwud29ya0BnbWFpbC5jb208L2E+ PC9kaXY+PGRpdj5waG9uZTogKzM0NjY5NDQ4MzM3PC9kaXY+PC9kaXY+PC9kaXY+Cl9fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fPGJyPgpzci11c2Vycy1lcyBt YWlsaW5nIGxpc3Q8YnI+CjxhIGhyZWY9Im1haWx0bzpzci11c2Vycy1lc0BsaXN0cy5rYW1haWxp by5vcmciIHRhcmdldD0iX2JsYW5rIj5zci11c2Vycy1lc0BsaXN0cy5rYW1haWxpby5vcmc8L2E+ PGJyPgo8YSBocmVmPSJodHRwczovL2xpc3RzLmthbWFpbGlvLm9yZy9jZ2ktYmluL21haWxtYW4v bGlzdGluZm8vc3ItdXNlcnMtZXMiIHJlbD0ibm9yZWZlcnJlciIgdGFyZ2V0PSJfYmxhbmsiPmh0 dHBzOi8vbGlzdHMua2FtYWlsaW8ub3JnL2NnaS1iaW4vbWFpbG1hbi9saXN0aW5mby9zci11c2Vy cy1lczwvYT48YnI+CjwvYmxvY2txdW90ZT48L2Rpdj48L2Rpdj4KX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX188YnI+CnNyLXVzZXJzLWVzIG1haWxpbmcgbGlz dDxicj4KPGEgaHJlZj0ibWFpbHRvOnNyLXVzZXJzLWVzQGxpc3RzLmthbWFpbGlvLm9yZyIgdGFy Z2V0PSJfYmxhbmsiPnNyLXVzZXJzLWVzQGxpc3RzLmthbWFpbGlvLm9yZzwvYT48YnI+CjxhIGhy ZWY9Imh0dHBzOi8vbGlzdHMua2FtYWlsaW8ub3JnL2NnaS1iaW4vbWFpbG1hbi9saXN0aW5mby9z ci11c2Vycy1lcyIgcmVsPSJub3JlZmVycmVyIiB0YXJnZXQ9Il9ibGFuayI+aHR0cHM6Ly9saXN0 cy5rYW1haWxpby5vcmcvY2dpLWJpbi9tYWlsbWFuL2xpc3RpbmZvL3NyLXVzZXJzLWVzPC9hPjxi cj4KPC9ibG9ja3F1b3RlPjwvZGl2PjxiciBjbGVhcj0iYWxsIj48ZGl2Pjxicj48L2Rpdj4tLSA8 YnI+PGRpdiBkaXI9Imx0ciI+Sm9zZSBGY28uIElybGVzIER1csOhPC9kaXY+Cl9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fPGJyPgpzci11c2Vycy1lcyBtYWls aW5nIGxpc3Q8YnI+CjxhIGhyZWY9Im1haWx0bzpzci11c2Vycy1lc0BsaXN0cy5rYW1haWxpby5v cmciIHRhcmdldD0iX2JsYW5rIj5zci11c2Vycy1lc0BsaXN0cy5rYW1haWxpby5vcmc8L2E+PGJy Pgo8YSBocmVmPSJodHRwczovL2xpc3RzLmthbWFpbGlvLm9yZy9jZ2ktYmluL21haWxtYW4vbGlz dGluZm8vc3ItdXNlcnMtZXMiIHJlbD0ibm9yZWZlcnJlciIgdGFyZ2V0PSJfYmxhbmsiPmh0dHBz Oi8vbGlzdHMua2FtYWlsaW8ub3JnL2NnaS1iaW4vbWFpbG1hbi9saXN0aW5mby9zci11c2Vycy1l czwvYT48YnI+CjwvYmxvY2txdW90ZT48L2Rpdj4KPC9ibG9ja3F1b3RlPjwvZGl2Pgo8L2Jsb2Nr cXVvdGU+PC9kaXY+Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fPGJyPgpzci11c2Vycy1lcyBtYWlsaW5nIGxpc3Q8YnI+CjxhIGhyZWY9Im1haWx0bzpzci11 c2Vycy1lc0BsaXN0cy5rYW1haWxpby5vcmciIHRhcmdldD0iX2JsYW5rIj5zci11c2Vycy1lc0Bs aXN0cy5rYW1haWxpby5vcmc8L2E+PGJyPgo8YSBocmVmPSJodHRwczovL2xpc3RzLmthbWFpbGlv Lm9yZy9jZ2ktYmluL21haWxtYW4vbGlzdGluZm8vc3ItdXNlcnMtZXMiIHJlbD0ibm9yZWZlcnJl ciIgdGFyZ2V0PSJfYmxhbmsiPmh0dHBzOi8vbGlzdHMua2FtYWlsaW8ub3JnL2NnaS1iaW4vbWFp bG1hbi9saXN0aW5mby9zci11c2Vycy1lczwvYT48YnI+CjwvYmxvY2txdW90ZT48L2Rpdj4KX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX188YnI+CnNyLXVzZXJz LWVzIG1haWxpbmcgbGlzdDxicj4KPGEgaHJlZj0ibWFpbHRvOnNyLXVzZXJzLWVzQGxpc3RzLmth bWFpbGlvLm9yZyIgdGFyZ2V0PSJfYmxhbmsiPnNyLXVzZXJzLWVzQGxpc3RzLmthbWFpbGlvLm9y ZzwvYT48YnI+CjxhIGhyZWY9Imh0dHBzOi8vbGlzdHMua2FtYWlsaW8ub3JnL2NnaS1iaW4vbWFp bG1hbi9saXN0aW5mby9zci11c2Vycy1lcyIgcmVsPSJub3JlZmVycmVyIiB0YXJnZXQ9Il9ibGFu ayI+aHR0cHM6Ly9saXN0cy5rYW1haWxpby5vcmcvY2dpLWJpbi9tYWlsbWFuL2xpc3RpbmZvL3Ny LXVzZXJzLWVzPC9hPjxicj4KPC9ibG9ja3F1b3RlPjwvZGl2Pgo= --===============0248242951==--