Ardila Ortiz

En la industria Oíl & Gas se tienen torres de perforación o workover, la cuales realizan trabajos de perforación y mantenimiento de pozos para la producción de petróleo y gas, la dinámica en este segmento de la industria consiste en que una empresa Operadora (Ecopetrol, Hocol, Parex …) contratan...

Full description

Autores:
Ardila Ortiz, Camilo Andres
Tipo de recurso:
Fecha de publicación:
2024
Institución:
Universidad Distrital Francisco José de Caldas
Repositorio:
RIUD: repositorio U. Distrital
Idioma:
OAI Identifier:
oai:repository.udistrital.edu.co:11349/40769
Acceso en línea:
http://hdl.handle.net/11349/40769
Palabra clave:
gps
raspberry pi
oil & gas
microservicios
modulo ethernet
gps
raspberry pi
oil & gas
microservices
ethernet module
Rights
License
Abierto (Texto Completo)
id UDISTRITA2_3d554c25bcb8c2880f7398d33e44ea2e
oai_identifier_str oai:repository.udistrital.edu.co:11349/40769
network_acronym_str UDISTRITA2
network_name_str RIUD: repositorio U. Distrital
repository_id_str
dc.title.none.fl_str_mv Ardila Ortiz
dc.title.alternative.none.fl_str_mv Development of a system for calculating distances in the mobilization of workover and drilling rigs using gps data
dc.title.titleenglish.none.fl_str_mv Desarrollo de un sistema para cálculo de distancias en movilizaciónes de torres de workover y perforación con data gps
title Ardila Ortiz
spellingShingle Ardila Ortiz
gps
raspberry pi
oil & gas
microservicios
modulo ethernet
gps
raspberry pi
oil & gas
microservices
ethernet module
title_short Ardila Ortiz
title_full Ardila Ortiz
title_fullStr Ardila Ortiz
title_full_unstemmed Ardila Ortiz
title_sort Ardila Ortiz
dc.creator.fl_str_mv Ardila Ortiz, Camilo Andres
dc.contributor.advisor.none.fl_str_mv Cárdenas Castiblanco, José Roberto
dc.contributor.author.none.fl_str_mv Ardila Ortiz, Camilo Andres
dc.subject.none.fl_str_mv gps
raspberry pi
oil & gas
microservicios
modulo ethernet
topic gps
raspberry pi
oil & gas
microservicios
modulo ethernet
gps
raspberry pi
oil & gas
microservices
ethernet module
dc.subject.keyword.none.fl_str_mv gps
raspberry pi
oil & gas
microservices
ethernet module
description En la industria Oíl & Gas se tienen torres de perforación o workover, la cuales realizan trabajos de perforación y mantenimiento de pozos para la producción de petróleo y gas, la dinámica en este segmento de la industria consiste en que una empresa Operadora (Ecopetrol, Hocol, Parex …) contratan a una empresa prestadora de servicios que posee RSU, torres y, o rigs para realizar estos trabajos, estas torres son estructuras móviles muy grandes que se trasladan de una locación a otra sobre todo en zonas rurales y en algunos casos de difícil acceso para realizar esta operaciones. La operadora realiza un contrato en el cual tiene una cantidad de torres disponibles que puede mover según su plan de negocios en los bloques, clúster o pozos que controla y de acuerdo a cada actividad que la operadora solicite a la dueña de los taladros esta ejecuta y factura, uno de esos casos específicos es la actividad de movilización que tiene unos de los costos más altos en el proceso, éste normalmente se factura basado en la carga y la trayectoria y en ciertas ocasiones el tiempo como una medida del esfuerzo de la misma, por su puesto la carga es fácilmente conocida igual que la distancia sin embargo no se sabe a ciencia cierta si la ruta planeada es la que verdaderamente se tomó y si es la cantidad de kilómetros que se facturaron por lo tanto tiene como consecuencia pérdidas económicas para la dueña de los taladros. En el presente proyecto se expone el desarrollo de un sistema que permite obtener las coordenadas en formato longitud y latitud para las torres de perforación y workover por medio de un equipo de IoT que permita enviarla hacia la nube para procesarla y conocer la trayectoria que una torre de perforación o workover montada en su unidad básica realiza desde un punto a otro con el fin de entrar entregar esta información para calcular correctamente del costo de la operación de movilización y adecuada facturación a las operadoras por parte de la empresa prestadora de servicios. Para resolver este problema se plantea usar un dispositivo que obtenga la información de las coordenadas mientras el equipo se moviliza, de tal forma que al llegar a una locación y vuelva a tener conexión a la red se envíe toda la data represada para su posterior procesamiento, al tener la data se realizan los cálculos de la trayectoria usando el procedimiento desarrollado por Haversine. El prototipo plantea la necesidad de un sistema de respaldo de energía y la conexión a módulos GPS y ethernet entre otros para la obtención y envío de información de la longitud, latitud, reloj, altura, fecha, y número de satélites. Este trabajo se enfoca en el desarrollo de la lógica de la solución, como lo es la codificación del microcontrolador para la captura, almacenamiento y envío de la información, así como la creación del servicio de IoT gateway, implementación bróker y lógica básica del negocio para conocer la distancia, se esboza además una posible forma de implementar la solución a nivel físico teniendo en cuenta el contexto. Se logra capturar y enviar la data a la nube para almacenarla y calcular la distancia recorrida en un intervalo de tiempo.
publishDate 2024
dc.date.accessioned.none.fl_str_mv 2024-09-16T16:39:45Z
dc.date.available.none.fl_str_mv 2024-09-16T16:39:45Z
dc.date.created.none.fl_str_mv 2024-08-09
dc.type.none.fl_str_mv bachelorThesis
dc.type.coar.fl_str_mv http://purl.org/coar/resource_type/c_7a1f
dc.type.degree.none.fl_str_mv Monografía
dc.identifier.uri.none.fl_str_mv http://hdl.handle.net/11349/40769
url http://hdl.handle.net/11349/40769
dc.relation.references.none.fl_str_mv Ardila Ortiz, C. A. (Agosto, 2024). Desarrollo de un sistema para cálculo de distancias en movilizaciones de torres de workover y perforación con data GPS. Universidad Distrital
dc.rights.coar.fl_str_mv http://purl.org/coar/access_right/c_abf2
dc.rights.acceso.none.fl_str_mv Abierto (Texto Completo)
rights_invalid_str_mv Abierto (Texto Completo)
http://purl.org/coar/access_right/c_abf2
dc.format.mimetype.none.fl_str_mv pdf
institution Universidad Distrital Francisco José de Caldas
bitstream.url.fl_str_mv https://repository.udistrital.edu.co/bitstreams/e1f77a76-9097-4b13-bfd8-d1af8d4301e7/download
https://repository.udistrital.edu.co/bitstreams/16bfba4d-4cb4-4970-969f-b3322304b78f/download
https://repository.udistrital.edu.co/bitstreams/b046192e-b8dd-4695-aa30-1843b196ea40/download
https://repository.udistrital.edu.co/bitstreams/f1b7ca1d-c274-4a2c-b741-301364f76539/download
https://repository.udistrital.edu.co/bitstreams/a9379679-9f14-41c3-98e5-5a2a39f4e935/download
bitstream.checksum.fl_str_mv 997daf6c648c962d566d7b082dac908d
79da0f75074b094e696a5717f282eedb
959cb358216240346ab73226c59222b2
e4b0ec899d76fc73234cd93965210e86
356c1c5a1ae066596d5b72b70d632c9d
bitstream.checksumAlgorithm.fl_str_mv MD5
MD5
MD5
MD5
MD5
repository.name.fl_str_mv Repositorio Universidad Distrital
repository.mail.fl_str_mv repositorio@udistrital.edu.co
_version_ 1828165819381579776
spelling Cárdenas Castiblanco, José RobertoArdila Ortiz, Camilo Andres2024-09-16T16:39:45Z2024-09-16T16:39:45Z2024-08-09http://hdl.handle.net/11349/40769En la industria Oíl & Gas se tienen torres de perforación o workover, la cuales realizan trabajos de perforación y mantenimiento de pozos para la producción de petróleo y gas, la dinámica en este segmento de la industria consiste en que una empresa Operadora (Ecopetrol, Hocol, Parex …) contratan a una empresa prestadora de servicios que posee RSU, torres y, o rigs para realizar estos trabajos, estas torres son estructuras móviles muy grandes que se trasladan de una locación a otra sobre todo en zonas rurales y en algunos casos de difícil acceso para realizar esta operaciones. La operadora realiza un contrato en el cual tiene una cantidad de torres disponibles que puede mover según su plan de negocios en los bloques, clúster o pozos que controla y de acuerdo a cada actividad que la operadora solicite a la dueña de los taladros esta ejecuta y factura, uno de esos casos específicos es la actividad de movilización que tiene unos de los costos más altos en el proceso, éste normalmente se factura basado en la carga y la trayectoria y en ciertas ocasiones el tiempo como una medida del esfuerzo de la misma, por su puesto la carga es fácilmente conocida igual que la distancia sin embargo no se sabe a ciencia cierta si la ruta planeada es la que verdaderamente se tomó y si es la cantidad de kilómetros que se facturaron por lo tanto tiene como consecuencia pérdidas económicas para la dueña de los taladros. En el presente proyecto se expone el desarrollo de un sistema que permite obtener las coordenadas en formato longitud y latitud para las torres de perforación y workover por medio de un equipo de IoT que permita enviarla hacia la nube para procesarla y conocer la trayectoria que una torre de perforación o workover montada en su unidad básica realiza desde un punto a otro con el fin de entrar entregar esta información para calcular correctamente del costo de la operación de movilización y adecuada facturación a las operadoras por parte de la empresa prestadora de servicios. Para resolver este problema se plantea usar un dispositivo que obtenga la información de las coordenadas mientras el equipo se moviliza, de tal forma que al llegar a una locación y vuelva a tener conexión a la red se envíe toda la data represada para su posterior procesamiento, al tener la data se realizan los cálculos de la trayectoria usando el procedimiento desarrollado por Haversine. El prototipo plantea la necesidad de un sistema de respaldo de energía y la conexión a módulos GPS y ethernet entre otros para la obtención y envío de información de la longitud, latitud, reloj, altura, fecha, y número de satélites. Este trabajo se enfoca en el desarrollo de la lógica de la solución, como lo es la codificación del microcontrolador para la captura, almacenamiento y envío de la información, así como la creación del servicio de IoT gateway, implementación bróker y lógica básica del negocio para conocer la distancia, se esboza además una posible forma de implementar la solución a nivel físico teniendo en cuenta el contexto. Se logra capturar y enviar la data a la nube para almacenarla y calcular la distancia recorrida en un intervalo de tiempo.In the Oil & Gas industry, there are drilling or workover rigs that perform drilling and well maintenance tasks for the production of oil and gas. The dynamics in this industry segment involve an operating company (such as Ecopetrol, Hocol, Parex, etc.) contracting a service provider company that owns RSUs, rigs, and/or drilling rigs to perform these tasks. These rigs are large mobile structures that are moved from one location to another, especially in rural areas and, in some cases, in difficult-to-access locations, to carry out these operations. The operating company establishes a contract in which it has a certain number of rigs available that can be moved according to its business plan in the blocks, clusters, or wells it controls. Based on the activities requested by the operating company, the rig owner executes and bills these activities. One specific case is mobilization, which is one of the most expensive processes. It is typically billed based on load, trajectory, and sometimes time as a measure of effort. While the load is easily known, as well as the distance, it is not always certain whether the planned route was actually taken and whether the kilometers billed were accurate, leading to potential financial losses for the rig owner. This project presents the development of a system that allows obtaining longitude and latitude coordinates for drilling and workover rigs using an IoT device that sends this data to the cloud for processing. This enables tracking the trajectory of a drilling or workover rig mounted on its base unit from one point to another, with the aim of providing accurate information to correctly calculate the mobilization operation cost and ensure proper billing to the operators by the service provider company. To address this problem, the proposed solution involves using a device that captures the coordinates while the rig is in motion. Once it arrives at a location and regains network connectivity, all stored data is sent for further processing. The data is then used to calculate the trajectory using the Haversine formula. The prototype outlines the need for a backup power system and the connection to GPS and Ethernet modules, among others, to obtain and transmit information such as longitude, latitude, time, altitude, date, and the number of satellites. This work focuses on developing the logic of the solution, including coding the microcontroller for capturing, storing, and transmitting information, as well as creating the IoT gateway service, implementing a broker, and establishing the basic business logic to determine the distance. Additionally, it outlines a potential physical implementation of the solution, taking the context into account. The project successfully captures and sends the data to the cloud for storage and calculates the distance traveled within a given time interval.SKANAHAWK SASpdfgpsraspberry pioil & gasmicroserviciosmodulo ethernetgpsraspberry pioil & gasmicroservicesethernet moduleArdila OrtizDevelopment of a system for calculating distances in the mobilization of workover and drilling rigs using gps dataDesarrollo de un sistema para cálculo de distancias en movilizaciónes de torres de workover y perforación con data gpsbachelorThesisMonografíahttp://purl.org/coar/resource_type/c_7a1fAbierto (Texto Completo)http://purl.org/coar/access_right/c_abf2Ardila Ortiz, C. A. (Agosto, 2024). Desarrollo de un sistema para cálculo de distancias en movilizaciones de torres de workover y perforación con data GPS. Universidad DistritalLICENSElicense.txtlicense.txttext/plain; charset=utf-87167https://repository.udistrital.edu.co/bitstreams/e1f77a76-9097-4b13-bfd8-d1af8d4301e7/download997daf6c648c962d566d7b082dac908dMD54ORIGINALLicencia de uso y publicacion.pdfLicencia de uso y publicacion.pdfapplication/pdf223061https://repository.udistrital.edu.co/bitstreams/16bfba4d-4cb4-4970-969f-b3322304b78f/download79da0f75074b094e696a5717f282eedbMD56ArdilaOrtizCamiloAndres2024.pdfArdilaOrtizCamiloAndres2024.pdfapplication/pdf2274279https://repository.udistrital.edu.co/bitstreams/b046192e-b8dd-4695-aa30-1843b196ea40/download959cb358216240346ab73226c59222b2MD57THUMBNAILLicencia de uso y publicacion.pdf.jpgLicencia de uso y publicacion.pdf.jpgIM Thumbnailimage/jpeg9508https://repository.udistrital.edu.co/bitstreams/f1b7ca1d-c274-4a2c-b741-301364f76539/downloade4b0ec899d76fc73234cd93965210e86MD58ArdilaOrtizCamiloAndres2024.pdf.jpgArdilaOrtizCamiloAndres2024.pdf.jpgIM Thumbnailimage/jpeg3040https://repository.udistrital.edu.co/bitstreams/a9379679-9f14-41c3-98e5-5a2a39f4e935/download356c1c5a1ae066596d5b72b70d632c9dMD5911349/40769oai:repository.udistrital.edu.co:11349/407692024-12-25 01:07:56.198open.accesshttps://repository.udistrital.edu.coRepositorio Universidad Distritalrepositorio@udistrital.edu.coTElDRU5DSUEgWSBBVVRPUklaQUNJw5NOIEVTUEVDSUFMIFBBUkEgUFVCTElDQVIgWSBQRVJNSVRJUiBMQSBDT05TVUxUQSBZIFVTTyBERSBDT05URU5JRE9TIEVOIEVMIFJFUE9TSVRPUklPIElOU1RJVFVDSU9OQUwgREUgTEEgVU5JVkVSU0lEQUQgRElTVFJJVEFMCgpUw6lybWlub3MgeSBjb25kaWNpb25lcyBkZSB1c28gcGFyYSBwdWJsaWNhY2nDs24gZGUgb2JyYXMgZW4gZWwgUmVwb3NpdG9yaW8gSW5zdGl0dWNpb25hbCBkZSBsYSBVbml2ZXJzaWRhZCBEaXN0cml0YWwgRnJhbmNpc2NvIEpvc8OpIGRlIENhbGRhcyAoUklVRCkKCkNvbW8gdGl0dWxhcihlcykgZGVsKG9zKSBkZXJlY2hvKHMpIGRlIGF1dG9yLCBjb25maWVybyAoZXJpbW9zKSBhIGxhIFVuaXZlcnNpZGFkIERpc3RyaXRhbCBGcmFuY2lzY28gSm9zw6kgZGUgQ2FsZGFzIChlbiBhZGVsYW50ZSwgTEEgVU5JVkVSU0lEQUQpIHVuYSBsaWNlbmNpYSBwYXJhIHVzbyBubyBleGNsdXNpdmEsIGxpbWl0YWRhIHkgZ3JhdHVpdGEgc29icmUgbGEgb2JyYSBxdWUgaW50ZWdyYXLDoSBlbCBSZXBvc2l0b3JpbyBJbnN0aXR1Y2lvbmFsIChlbiBhZGVsYW50ZSwgUklVRCksIGRlIGFjdWVyZG8gYSBsYXMgc2lndWllbnRlcyByZWdsYXMsIGxhcyBjdWFsZXMgZGVjbGFybyAoYW1vcykgY29ub2NlciB5IGFjZXB0YXI6CgphKQlFc3RhcsOhIHZpZ2VudGUgYSBwYXJ0aXIgZGUgbGEgZmVjaGEgZW4gcXVlIHNlIGluY2x1eWEgZW4gZWwgUklVRCB5IGhhc3RhIHBvciB1biBwbGF6byBkZSBkaWV6ICgxMCkgQcOxb3MsIHByb3Jyb2dhYmxlIGluZGVmaW5pZGFtZW50ZSBwb3IgZWwgdGllbXBvIHF1ZSBkdXJlIGVsIGRlcmVjaG8gUGF0cmltb25pYWwgZGVsIGF1dG9yOyBsYSBjdWFsIHBvZHLDoSBkYXJzZSBwb3IgdGVybWluYWRhIHByZXZpYSBzb2xpY2l0dWQgYSBMQSBVTklWRVJTSURBRCBwb3IgZXNjcml0byBjb24gdW5hIGFudGVsYWNpw7NuIGRlIGRvcyAoMikgbWVzZXMgYW50ZXMgZGVsIHZlbmNpbWllbnRvIGRlbCBwbGF6byBpbmljaWFsIG8gZWwgZGUgc3UocykgcHLDs3Jyb2dhKHMpLgoKYikJTEEgVU5JVkVSU0lEQUQgcG9kcsOhIHB1YmxpY2FyIGxhIG9icmEgZW4gbGFzIGRpc3RpbnRhcyB2ZXJzaW9uZXMgcmVxdWVyaWRhcyBwb3IgZWwgUklVRCAoZGlnaXRhbCwgaW1wcmVzbywgZWxlY3Ryw7NuaWNvIHUgb3RybyBtZWRpbyBjb25vY2lkbyBvIHBvciBjb25vY2VyKSBMQSBVTklWRVJTSURBRCBubyBzZXLDoSByZXNwb25zYWJsZSBlbiBlbCBldmVudG8gcXVlIGVsIGRvY3VtZW50byBhcGFyZXpjYSByZWZlcmVuY2lhZG8gZW4gbW90b3JlcyBkZSBiw7pzcXVlZGEgbyByZXBvc2l0b3Jpb3MgZGlmZXJlbnRlcyBhbCBSSVVELCB1bmEgdmV6IGVsKG9zKSBhdXRvcihlcykgc29saWNpdGVuIHN1IGVsaW1pbmFjacOzbiBkZWwgUklVRCwgZGFkbyBxdWUgbGEgbWlzbWEgc2Vyw6EgcHVibGljYWRhIGVuIEludGVybmV0LgoKYykJTGEgYXV0b3JpemFjacOzbiBzZSBoYWNlIGEgdMOtdHVsbyBncmF0dWl0bywgcG9yIGxvIHRhbnRvLCBsb3MgYXV0b3JlcyByZW51bmNpYW4gYSByZWNpYmlyIGJlbmVmaWNpbyBhbGd1bm8gcG9yIGxhIHB1YmxpY2FjacOzbiwgZGlzdHJpYnVjacOzbiwgY29tdW5pY2FjacOzbiBww7pibGljYSB5IGN1YWxxdWllciBvdHJvIHVzbyBxdWUgc2UgaGFnYSBlbiBsb3MgdMOpcm1pbm9zIGRlIGxhIHByZXNlbnRlIGxpY2VuY2lhIHkgZGUgbGEgbGljZW5jaWEgZGUgdXNvIGNvbiBxdWUgc2UgcHVibGljYSAoQ3JlYXRpdmUgQ29tbW9ucykuCgpkKQlMb3MgY29udGVuaWRvcyBwdWJsaWNhZG9zIGVuIGVsIFJJVUQgc29uIG9icmEocykgb3JpZ2luYWwoZXMpIHNvYnJlIGxhIGN1YWwoZXMpIGVsKG9zKSBhdXRvcihlcykgY29tbyB0aXR1bGFyZXMgZGUgbG9zIGRlcmVjaG9zIGRlIGF1dG9yLCBhc3VtZW4gdG90YWwgcmVzcG9uc2FiaWxpZGFkIHBvciBlbCBjb250ZW5pZG8gZGUgc3Ugb2JyYSBhbnRlIExBIFVOSVZFUlNJREFEIHkgYW50ZSB0ZXJjZXJvcy4gRW4gdG9kbyBjYXNvIExBIFVOSVZFUlNJREFEIHNlIGNvbXByb21ldGUgYSBpbmRpY2FyIHNpZW1wcmUgbGEgYXV0b3LDrWEgaW5jbHV5ZW5kbyBlbCBub21icmUgZGVsIGF1dG9yIHkgbGEgZmVjaGEgZGUgcHVibGljYWNpw7NuLgoKZSkJTEEgVU5JVkVSU0lEQUQgcG9kcsOhIGluY2x1aXIgbGEgb2JyYSBlbiBsb3Mgw61uZGljZXMgeSBidXNjYWRvcmVzIHF1ZSBlc3RpbWVuIG5lY2VzYXJpb3MgcGFyYSBtYXhpbWl6YXIgbGEgdmlzaWJpbGlkYWQgZWwgdXNvIHkgZWwgaW1wYWN0byBkZSBsYSBwcm9kdWNjacOzbiBjaWVudMOtZmljYSwgYXJ0w61zdGljYSB5IGFjYWTDqW1pY2EgZW4gbGEgY29tdW5pZGFkIGxvY2FsLCBuYWNpb25hbCBvIGludGVybmFjaW9uYWwuCgoKZikJTEEgVU5JVkVSU0lEQUQgcG9kcsOhIGNvbnZlcnRpciBsYSBvYnJhIGEgY3VhbHF1aWVyIG1lZGlvIG8gZm9ybWF0byBjb24gZWwgZmluIGRlIHN1IHByZXNlcnZhY2nDs24gZW4gZWwgdGllbXBvIHF1ZSBsYSBwcmVzZW50ZSBsaWNlbmNpYSB5IGxhIGRlIHN1cyBwcsOzcnJvZ2FzLgoKCkNvbiBiYXNlIGVuIGxvIGFudGVyaW9yIGF1dG9yaXpvKGFtb3MpLCBhIGZhdm9yIGRlbCBSSVVEIHkgZGUgc3VzIHVzdWFyaW9zLCBsYSBwdWJsaWNhY2nDs24geSBjb25zdWx0YSBkZSBsYSBzaWd1aWVudGUgb2JyYToKClRpdHVsbwoKQXV0b3IgICAgICAgQXBlbGxpZG9zICAgICAgICAgTm9tYnJlcwoKMQoKMgoKMwoKCmcpCUF1dG9yaXpvKGFtb3MpLCBxdWUgbGEgb2JyYSBzZWEgcHVlc3RhIGEgZGlzcG9zaWNpw7NuIGRlbCBww7pibGljbyBlbiBsb3MgdMOpcm1pbm9zIGVzdGFibGVjaWRvcyBlbiBsb3MgbGl0ZXJhbGVzIGFudGVyaW9yZXMsIGJham8gbG9zIGzDrW1pdGVzIGRlZmluaWRvcyBwb3IgTEEgVU5JVkVSU0lEQUQsIGVuIGxhcyDigJxDb25kaWNpb25lcyBkZSB1c28gZGUgZXN0cmljdG8gY3VtcGxpbWllbnRv4oCdIGRlIGxvcyByZWN1cnNvcyBwdWJsaWNhZG9zIGVuIGVsIFJJVUQsIGN1eW8gdGV4dG8gY29tcGxldG8gc2UgcHVlZGUgY29uc3VsdGFyIGVuIGh0dHA6Ly9yZXBvc2l0b3J5LnVkaXN0cml0YWwuZWR1LmNvLwoKaCkJQ29ub3pjbyhjZW1vcykgeSBhY2VwdG8oYW1vcykgcXVlIG90b3JnbyhhbW9zKSB1bmEgbGljZW5jaWEgZXNwZWNpYWwgcGFyYSBwdWJsaWNhY2nDs24gZGUgb2JyYXMgZW4gZWwgUmVwb3NpdG9yaW8gSW5zdGl0dWNpb25hbCBkZSBsYSBVbml2ZXJzaWRhZCBEaXN0cml0YWwgRnJhbmNpc2NvIEpvc8OpIGRlIENhbGRhcywgbGljZW5jaWEgICBkZSBsYSBjdWFsIGhlIChoZW1vcykgb2J0ZW5pZG8gdW5hIGNvcGlhLgoKaSkJTWFuaWZpZXN0byhhbW9zKSBtaSAobnVlc3RybykgdG90YWwgYWN1ZXJkbyBjb24gbGFzIGNvbmRpY2lvbmVzIGRlIHVzbyB5IHB1YmxpY2FjacOzbiBlbiBlbCBSZXBvc2l0b3JpbyBJbnN0aXR1Y2lvbmFsIGRlIGxhIFVuaXZlcnNpZGFkIERpc3RyaXRhbCBGcmFuY2lzY28gSm9zw6kgZGUgQ2FsZGFzIHF1ZSBzZSBkZXNjcmliZW4geSBleHBsaWNhbiBlbiBlbCBwcmVzZW50ZSBkb2N1bWVudG8uCgpqKQlDb25vemNvKGNlbW9zKSBsYSBub3JtYXRpdmlkYWQgaW50ZXJuYSBkZSAgTEEgVU5JVkVSU0lEQUQ7IGVuIGNvbmNyZXRvLCBlbCBBY3VlcmRvIDAwNCBkZSAyMDEyIGRlbCBDU1UsIEFjdWVyZG8gMDIzIGRlIDIwMTIgZGVsIENTVSBzb2JyZSBQb2zDrXRpY2EgRWRpdG9yaWFsLCBBY3VlcmRvIDAyNiAgZGVsIDMxIGRlIGp1bGlvIGRlIDIwMTIgc29icmUgZWwgcHJvY2VkaW1pZW50byBwYXJhIGxhIHB1YmxpY2FjacOzbiBkZSB0ZXNpcyBkZSBwb3N0Z3JhZG8gZGUgbG9zIGVzdHVkaWFudGVzIGRlIGxhIFVuaXZlcnNpZGFkIERpc3RyaXRhbCBGcmFuY2lzY28gSm9zw6kgZGUgQ2FsZGFzLCAgQWN1ZXJkbyAwMzAgZGVsIDAzIGRlIGRpY2llbWJyZSBkZSAyMDEzIHBvciBtZWRpbyBkZWwgY3VhbCBzZSBjcmVhIGVsIFJlcG9zaXRvcmlvIEluc3RpdHVjaW9uYWwgZGUgbGEgVW5pdmVyc2lkYWQgRGlzdHJpdGFsIEZyYW5jaXNjbyBKb3PDqSBkZSBDYWxkYXMsIEFjdWVyZG8gMDM4IGRlIDIwMTUgMjAxNSDigJxwb3IgZWwgY3VhbCBzZSBtb2RpZmljYSBlbCBBY3VlcmRvIDAzMSBkZSAyMDE0IGRlIDIwMTQgcXVlIHJlZ2xhbWVudGEgZWwgdHJhYmFqbyBkZSBncmFkbyBwYXJhIGxvcyBlc3R1ZGlhbnRlcyBkZSBwcmVncmFkbyBkZSBsYSBVbml2ZXJzaWRhZCBEaXN0cml0YWwgRnJhbmNpc2NvIEpvc8OpIGRlIENhbGRhcyB5IHNlIGRpY3RhbiBvdHJhcyBkaXJlY3RyaWNlc+KAnSB5IGxhcyBkZW3DoXMgbm9ybWFzIGNvbmNvcmRhbnRlIHkgY29tcGxlbWVudGFyaWFzIHF1ZSByaWdlbiBhbCByZXNwZWN0bywgZXNwZWNpYWxtZW50ZSBsYSBsZXkgMjMgZGUgMTk4MiwgbGEgbGV5IDQ0IGRlIDE5OTMgeSBsYSBkZWNpc2nDs24gQW5kaW5hIDM1MSBkZSAxOTkzLiBFc3RvcyBkb2N1bWVudG9zIHBvZHLDoW4gc2VyIGNvbnN1bHRhZG9zIHkgZGVzY2FyZ2Fkb3MgZW4gZWwgcG9ydGFsIHdlYiBkZSBsYSBiaWJsaW90ZWNhIGh0dHA6Ly9zaXN0ZW1hZGViaWJsaW90ZWNhcy51ZGlzdHJpdGFsLmVkdS5jby8KCmspCUFjZXB0byhhbW9zKSBxdWUgTEEgVU5JVkVSU0lEQUQgbm8gc2UgcmVzcG9uc2FiaWxpemEgcG9yIGxhcyBpbmZyYWNjaW9uZXMgYSBsYSBwcm9waWVkYWQgaW50ZWxlY3R1YWwgbyBEZXJlY2hvcyBkZSBBdXRvciBjYXVzYWRhcyBwb3IgbG9zIHRpdHVsYXJlcyBkZSBsYSBwcmVzZW50ZSBMaWNlbmNpYSB5IGRlY2xhcmFtb3MgcXVlIG1hbnRlbmRyw6kgKGVtb3MpIGluZGVtbmUgYSBMQSBVTklWRVJTSURBRCBwb3IgbGFzIHJlY2xhbWFjaW9uZXMgbGVnYWxlcyBkZSBjdWFscXVpZXIgdGlwbyBxdWUgbGxlZ2FyZW4gYSBwcmVzZW50YXJzZSBwb3IgdmlvbGFjacOzbiBkZSBkZXJlY2hvcyBhIGxhIHByb3BpZWRhZCBpbnRlbGVjdHVhbCBvIGRlIEF1dG9yIHJlbGFjaW9uYWRvcyBjb24gbG9zIGRvY3VtZW50b3MgcmVnaXN0cmFkb3MgZW4gZWwgUklVRC4KCmwpCUVsIChsb3MpIGF1dG9yKGVzKSBtYW5pZmllc3RhKG1vcykgcXVlIGxhIG9icmEgb2JqZXRvIGRlIGxhIHByZXNlbnRlIGF1dG9yaXphY2nDs24gZXMgb3JpZ2luYWwsIGRlIGV4Y2x1c2l2YSBhdXRvcsOtYSwgeSBzZSByZWFsaXrDsyBzaW4gdmlvbGFyIG8gdXN1cnBhciBkZXJlY2hvcyBkZSBhdXRvciBkZSB0ZXJjZXJvczsgZGUgdGFsIHN1ZXJ0ZSwgZW4gY2FzbyBkZSBwcmVzZW50YXJzZSBjdWFscXVpZXIgcmVjbGFtYWNpw7NuIG8gYWNjacOzbiBwb3IgcGFydGUgZGUgdW4gdGVyY2VybyBlbiBjdWFudG8gYSBsb3MgZGVyZWNob3MgZGUgYXV0b3Igc29icmUgbGEgb2JyYSwgZWwgKGxvcykgZXN0dWRpYW50ZShzKSDigJMgYXV0b3IoZXMpIGFzdW1pcsOhKG4pIHRvZGEgbGEgcmVzcG9uc2FiaWxpZGFkIHkgc2FsZHLDoShuKSBlbiBkZWZlbnNhIGRlIGxvcyBkZXJlY2hvcyBhcXXDrSBhdXRvcml6YWRvcy4gUGFyYSB0b2RvcyBsb3MgZWZlY3RvcywgTEEgVU5JVkVSU0lEQUQgYWN0w7phIGNvbW8gdW4gdGVyY2VybyBkZSBidWVuYSBmZS4KCgptKQlFbCAobG9zKSBhdXRvcihlcykgbWFuaWZpZXN0YShtb3MpIHF1ZSBjb25vemNvKGNlbW9zKSBsYSBhdXRvbm9tw61hIHkgbG9zIGRlcmVjaG9zLCBxdWUgcG9zZWUobW9zKSBzb2JyZSBsYSBvYnJhIHksIGNvbW8gdGFsLCBlcyAoc29tb3MpIHJlc3BvbnNhYmxlKHMpIGRlbCBhbGNhbmNlIGp1csOtZGljbyB5IGxlZ2FsLCBkZSBlc2NvZ2VyIGxhIG9wY2nDs24gZGUgbGEgcHVibGljYWNpw7NuIG8gZGUgcmVzdHJpY2Npw7NuIGRlIGxhIHB1YmxpY2FjacOzbiBkZWwgZG9jdW1lbnRvIHJlZ2lzdHJhZG8gZW4gZWwgUklVRC4KCgoKCgoKU0kgRUwgRE9DVU1FTlRPIFNFIEJBU0EgRU4gVU4gVFJBQkFKTyBRVUUgSEEgU0lETyBQQVRST0NJTkFETyBPIEFQT1lBRE8gUE9SIFVOQSBBR0VOQ0lBIE8gVU5BIE9SR0FOSVpBQ0nDk04sIENPTiBFWENFUENJw5NOIERFIExBIFVOSVZFUlNJREFEIERJU1RSSVRBTCBGUkFOQ0lTQ08gSk9TRSBERSBDQUxEQVMsIExPUyBBVVRPUkVTIEdBUkFOVElaQU4gUVVFIFNFIEhBIENVTVBMSURPIENPTiBMT1MKREVSRUNIT1MgWSBPQkxJR0FDSU9ORVMgUkVRVUVSSURPUyBQT1IgRUwgUkVTUEVDVElWTyBDT05UUkFUTyBPIEFDVUVSRE8uCgoKCgoKCgoKCgoKCgoKCgoKCgoKCkVuIGNvbnN0YW5jaWEgZGUgbG8gYW50ZXJpb3IsIGZpcm1vKGFtb3MpIGVsIHByZXNlbnRlIGRvY3VtZW50bywgZW4gbGEgY2l1ZGFkIGRlIEJvZ290w6EsIEQuQy4sIGEgbG9zCgoKRklSTUEgREUgTE9TIFRJVFVMQVJFUyBERSBERVJFQ0hPUyBERSBBVVRPUgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fICAgQy5DLiBOby4gX19fX19fX19fX19fX19fX19fCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18gICBDLkMuIE5vLiBfX19fX19fX19fX19fX19fX18KCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXyAgIEMuQy4gTm8uIF9fX19fX19fX19fX19fX19fXwoKCgpDb3JyZW8gRWxlY3Ryw7NuaWNvIEluc3RpdHVjaW9uYWwgZGVsIChkZSBsb3MpIEF1dG9yKGVzKToKCkF1dG9yCSAgICAgIENvcnJlbyBFbGVjdHLDs25pY28KCjEKCjIKCjMKCk5vbWJyZSBkZSBEaXJlY3RvcihlcykgZGUgR3JhZG86CgoxCgoyCgozCgpOb21icmUgRmFjdWx0YWQgeSBQcm95ZWN0byBDdXJyaWN1bGFyOgoKRmFjdWx0YWQJUHJveWVjdG8gQ3VycmljdWxhcgoKCgoKCgoKCk5vdGE6IEVuIGNhc28gcXVlIG5vIGVzdMOpIGRlIGFjdWVyZG8gY29uIGxhcyBjb25kaWNpb25lcyBkZSBsYSBwcmVzZW50ZSBsaWNlbmNpYSwgeSBtYW5pZmllc3RlIGFsZ3VuYSByZXN0cmljY2nDs24gc29icmUgbGEgb2JyYSwganVzdGlmaXF1ZSBsb3MgbW90aXZvcyBwb3IgbG9zIGN1YWxlcyBlbCBkb2N1bWVudG8geSBzdXMgYW5leG9zIG5vIHB1ZWRlbiBzZXIgcHVibGljYWRvcyBlbiBlbCBSZXBvc2l0b3JpbyBJbnN0aXR1Y2lvbmFsIGRlIGxhIFVuaXZlcnNpZGFkIERpc3RyaXRhbCBGcmFuY2lzY28gSm9zw6kgZGUgQ2FsZGFzIFJJVUQuCgoKU2kgcmVxdWllcmUgbcOhcyBlc3BhY2lvLCBwdWVkZSBhbmV4YXIgdW5hIGNvcGlhIHNpbWlsYXIgYSBlc3RhIGhvamEK