WHONET software: installation and initial configuration (example)

1 Installation

Go to WHONET website and download the program WHONET 2024. Current laptops are usually use 64 bits version.

To install the program: double click on the file you just downloaded (its WHONET2024-Setup-x64-v24.10.22.exe for me) and use default installation options.

WHONET offers a lot of tutorials on how to use it via its Training center.

During this week, you will learn how to use it to register the data for INIKA project. The instruction bellow are specific to get you ready to register data for the INIKA project.

1.1 Getting ready to enter data for the INIKA project

1.1.1 Import of the Laboratory file1

Janice has prepared a laboratory file. This file contains information about the data you will have to register. It kinds of create a form for data registering, similar to the questionnaire form that was used to register data in KoboToolbox.

The laboratory file starts by LAB then TZA for Tanzania.

The test version I am using now is called LABTZA.INIKA_TZ (you might have to use a version that will be named differently)

To import this laboratory into your WHONET_2024 in the menu.

Go to File (select and one left click), then choose Browse and find the directory where you have downloaded the laboratory file and select this directory and click ok. Then select Open laboratory.

1.1.2 Create a new data entry

PS: done only once, the first time you want to register data from a new lab!

Create a data entry file (this will be a SQLite database) by selecting Data entry and then New data file. You can use the default location, but you need to remember where this is, and you need to note the name of the file. then click save.

For me the default location is C:/WHONET/Data and the file is called TZA-INIKA_TZ-20242.sqlite.

A form to register your data will appear. This should look similar to that2:

When you close the window using X (top right of the window) you exit the data registering form.

2 Working with WHONET

2.1 Entering data

Each time you have closed WHONET, you will reopen the data file you are started to register the data into.

Select Data entry then Open data file and choose the file that you saved in the previous section.

Enter the data for several isolates (Training session done with Janice).

The data you registered is saved when you click on Save isolate

You can have a look at the data you have registered by clicking on View database. This can allow you to have an overview and correct eventual mistakes during registering, when you are using your lab notes.

To go back to the form for registering data, click on Continue

To exit the form click on Exit

2.2 Backing up your data

IMPORTANT : you data has to be backup regularly and put on a shared directory where we can access it. This is important because if there is a problem with your computer, not all your work will be lost.

Never work more than half a day on data registering without backing up your data

2.2.1 Solution via WHONET

To create a file containing the backup of your data: select Data entry then Combine, export or encrypt data files

Then click on Data files, select the file and use the arrow directed to the right to add the file to the Data files panel (the left arrow allows to remove this if you have done a mistake) and click ok

The previous panel is now updated.

  • Use Browse to choose where you will save the file (it must be easy of access so you can copy this data to your backup area on Google drive)

Naming rules:

Please save the backup using a file name constituted as such : date_OriginalName.sqlite

  • Type the date (ISO format e.g.. 2024-11-07) . If you really want hours minutes and seconds, do: 2024-11-07_18-15-00 Unless you export your data several times a day I do not think its necessary. > This is a deviation from ISO format, but it will work for a computer file exported at 18h 15min 0s.

  • The original name of my file is TZA-INIKA_TZ-20242.sqlite

  • The final name is then 2024-11-07_TZA-INIKA_TZ-20242.sqlite

Then click on Combine (we do not combine data but this allows exporting the data) Then click on Exit

Then you will need to upload this file on INIKA Google drive to your backup area.

2.2.2 Solution via file explorer

  • Find where the data from WHONET data is registered. For me it is registered in C:/WHONET/Data and the original WHONET file is called TZA-INIKA_TZ-2024.sqlite
  • copy (ctrl + C) or right click with the mouse
  • Navigate to the backup save location save location
  • paste (ctrl + V) or right click paste with the mouse
  • rename the file according to the naming rules described above, it should according to my example be 2024-11-07_TZA-INIKA_TZ-20242.sqlite

Then you will need to upload this file on INIKA Google drive to your backup area.

3 Changing LAB configuration

3.1 Aggreement with NVI team before changing LAB configuration

Should you need (maybe at the beginning of data registering AND in agreement with the teams members (Janice & Camilla) during meetings, you may have to replace the original lab configuration by another one. This is a file that Janice will provide.

BEFORE you replace the lab file with a new one, you need to delete the old one. Either directly, using WHONET OR you can delete the file via windows file manager. The file is in C:/WHONET and starts by LABeg . LABTZA.INIKA_TZ

Then you can import the new lab file as described in the first section of this document.

3.2 Reopening the data

BEFORE reopening the data file after a change of lab configuration, you MUST backup the data file in Google drive, including the date (and eventually time) of the backup!, even if you did a backup just before.

Then you can open the data that was created with the previous lab configuration. It might ask you to remove or make some change. If WHONET software asks you to remove columns that contain important information, you should have discussed this with the INIKA team members at NVI. If this has not been discussed, this is not good. Please take this up with the team members.

Back to Index


  1. This needs to be done only once↩︎

  2. It will not be exactly identical, because there are still some discussion about the field choice and their naming.↩︎

LS0tDQp0aXRsZTogImByIHBhcmFtcyR0aXRsZWAiDQpkYXRlOiAiYHIgZm9ybWF0KFN5cy50aW1lKCksICclZCAlQiwgJVknKWAiDQphdXRob3I6IEphbm5pY2UgU2NoYXUgU2xldHRlbWXDpXMgYW5kIEV2ZSBaZXlsIEZpc2tlYmVjaw0KcGFyYW1zOg0KICB0aXRsZTogIldIT05FVCBzb2Z0d2FyZTogaW5zdGFsbGF0aW9uIGFuZCBpbml0aWFsIGNvbmZpZ3VyYXRpb24gKGV4YW1wbGUpIiANCiAgcHJvamVjdF9wYXRoOiAiYHIgaGVyZTo6aGVyZSgpYCINCiAgDQprbml0OiAoZnVuY3Rpb24oaW5wdXRGaWxlLCBlbmNvZGluZykgew0KICBybWFya2Rvd246OnJlbmRlcihpbnB1dEZpbGUsIGVuY29kaW5nID0gZW5jb2RpbmcsIG91dHB1dF9kaXIgPSAiLi4vLi4vZG9jcyIpIH0pDQogIA0Kb3V0cHV0OiANCiAgDQogIHJtZGZvcm1hdHM6OnJlYWR0aGVkb3duOg0KICAgICAgY3NzOiAuLi9zdHlsZXMvc3R5bGUuY3NzDQogICAgICBzZWxmX2NvbnRhaW5lZDogdHJ1ZQ0KICAgICAgY29kZV9kb3dubG9hZDogdHJ1ZQ0KICAgICAgdG9jX2RlcHRoOiA0DQogICAgICBkZl9wcmludDogcGFnZWQNCiAgICAgIGNvZGVfZm9sZGluZzogc2hvdw0KICAgICAgYXV0aG9yOiBwYXJhbXMkYXV0aG9yDQogICAgICBoaWdobGlnaHQ6IGVzcHJlc3NvDQogICAgICBudW1iZXJfc2VjdGlvbnM6IHRydWUNCiAgICAgIA0KDQogIA0KZWRpdG9yX29wdGlvbnM6IA0KICBtYXJrZG93bjogDQogICAgd3JhcDogNzINCi0tLQ0KDQojIEluc3RhbGxhdGlvbg0KDQpHbyB0byBbV0hPTkVUIHdlYnNpdGVdKGh0dHBzOi8vd2hvbmV0Lm9yZy8pIGFuZCBkb3dubG9hZCB0aGUgcHJvZ3JhbSBXSE9ORVQgMjAyNC4gQ3VycmVudCBsYXB0b3BzIGFyZSB1c3VhbGx5IHVzZSA2NCBiaXRzIHZlcnNpb24uIA0KDQpUbyBpbnN0YWxsIHRoZSBwcm9ncmFtOiBkb3VibGUgY2xpY2sgb24gdGhlIGZpbGUgeW91IGp1c3QgZG93bmxvYWRlZCAoaXRzIGBXSE9ORVQyMDI0LVNldHVwLXg2NC12MjQuMTAuMjIuZXhlYCBmb3IgbWUpIGFuZCB1c2UgZGVmYXVsdCBpbnN0YWxsYXRpb24gb3B0aW9ucy4gDQoNCldIT05FVCBvZmZlcnMgYSBsb3Qgb2YgdHV0b3JpYWxzIG9uIGhvdyB0byB1c2UgaXQgdmlhIGl0cyBbVHJhaW5pbmcgY2VudGVyXShodHRwczovL3dob25ldC5vcmcvdHJhaW5pbmcuaHRtbCkuIA0KDQpEdXJpbmcgdGhpcyB3ZWVrLCB5b3Ugd2lsbCBsZWFybiBob3cgdG8gdXNlIGl0IHRvIHJlZ2lzdGVyIHRoZSBkYXRhIGZvciBJTklLQSBwcm9qZWN0LiANClRoZSBpbnN0cnVjdGlvbiBiZWxsb3cgYXJlIHNwZWNpZmljIHRvIGdldCB5b3UgcmVhZHkgdG8gcmVnaXN0ZXIgZGF0YSBmb3INCnRoZSBJTklLQSBwcm9qZWN0Lg0KDQoNCiMjIEdldHRpbmcgcmVhZHkgdG8gZW50ZXIgZGF0YSBmb3IgdGhlIElOSUtBIHByb2plY3QNCg0KIyMjIEltcG9ydCBvZiB0aGUgTGFib3JhdG9yeSBmaWxlW14xXQ0KDQpbXjFdOlRoaXMgbmVlZHMgdG8gYmUgZG9uZSBvbmx5IG9uY2UgDQoNCg0KSmFuaWNlIGhhcyBwcmVwYXJlZCBhIGxhYm9yYXRvcnkgZmlsZS4gVGhpcyBmaWxlIGNvbnRhaW5zIGluZm9ybWF0aW9uIGFib3V0IHRoZSBkYXRhIHlvdSB3aWxsIGhhdmUgdG8gcmVnaXN0ZXIuIEl0IGtpbmRzIG9mIGNyZWF0ZSBhIGZvcm0gZm9yICBkYXRhIHJlZ2lzdGVyaW5nLCBzaW1pbGFyIHRvIHRoZSBxdWVzdGlvbm5haXJlIGZvcm0gdGhhdCB3YXMgdXNlZCB0byByZWdpc3RlciBkYXRhIGluIEtvYm9Ub29sYm94Lg0KDQpUaGUgbGFib3JhdG9yeSBmaWxlIHN0YXJ0cyBieSBgTEFCYCB0aGVuIGBUWkFgIGZvciBUYW56YW5pYS4NCg0KPiBUaGUgdGVzdCB2ZXJzaW9uIEkgYW0gdXNpbmcgbm93IGlzIGNhbGxlZCBgTEFCVFpBLklOSUtBX1RaYCAoeW91IG1pZ2h0IGhhdmUgdG8gdXNlIA0KYSB2ZXJzaW9uIHRoYXQgd2lsbCBiZSBuYW1lZCBkaWZmZXJlbnRseSkNCg0KVG8gaW1wb3J0IHRoaXMgbGFib3JhdG9yeSBpbnRvIHlvdXIgV0hPTkVUXzIwMjQgaW4gdGhlIG1lbnUuICANCg0KIVtdKC4vaW1hZ2VzLzIwMjQxMTA3MTc1NDQ2LnBuZyl7d2lkdGg9NTAlfQ0KDQpHbyB0byBgRmlsZWAgKHNlbGVjdCBhbmQgb25lIGxlZnQgY2xpY2spLCAgdGhlbiBjaG9vc2UgIGBCcm93c2VgIGFuZCBmaW5kIHRoZSBkaXJlY3Rvcnkgd2hlcmUgeW91IGhhdmUgZG93bmxvYWRlZCB0aGUgbGFib3JhdG9yeSBmaWxlIGFuZCBzZWxlY3QgdGhpcyBkaXJlY3RvcnkgYW5kIGNsaWNrIG9rLiANClRoZW4gc2VsZWN0IGBPcGVuIGxhYm9yYXRvcnlgLiANCg0KIVtdKC4vaW1hZ2VzLzIwMjQxMTA3MTc1MzUwLnBuZyl7d2lkdGg9NTAlfQ0KDQotIFsgXSBKYW5pY2UgdXBkYXRpbmcgYnJlYWtwb2ludHMgPyAgc2VsZWN0ZWQgbm8gDQoNCiMjIyBDcmVhdGUgYSBuZXcgZGF0YSBlbnRyeQ0KDQo+IFBTOiBkb25lIG9ubHkgb25jZSwgdGhlIGZpcnN0IHRpbWUgeW91IHdhbnQgdG8gcmVnaXN0ZXIgZGF0YSBmcm9tIGEgbmV3IGxhYiEgDQoNCkNyZWF0ZSBhIGRhdGEgZW50cnkgZmlsZSAodGhpcyB3aWxsIGJlIGEgU1FMaXRlIGRhdGFiYXNlKSBieSBzZWxlY3RpbmcgYERhdGEgZW50cnlgIGFuZCB0aGVuIGBOZXcgZGF0YSBmaWxlYC4gIFlvdSBjYW4gdXNlIHRoZSBkZWZhdWx0IGxvY2F0aW9uLCBidXQgeW91IG5lZWQgdG8gKipyZW1lbWJlciB3aGVyZSB0aGlzIGlzLCBhbmQgeW91IG5lZWQgdG8gbm90ZSB0aGUgbmFtZSBvZiB0aGUgZmlsZS4qKiB0aGVuIGNsaWNrIHNhdmUuDQoNCj4gRm9yIG1lIHRoZSBkZWZhdWx0IGxvY2F0aW9uIGlzIGBDOi9XSE9ORVQvRGF0YWAgYW5kIHRoZSBmaWxlIGlzIGNhbGxlZCAgYFRaQS1JTklLQV9UWi0yMDI0Mi5zcWxpdGVgLiANCg0KIVtdKC4vaW1hZ2VzLzIwMjQxMTA3MTc1ODQyLnBuZykNCg0KQSBmb3JtIHRvIHJlZ2lzdGVyIHlvdXIgZGF0YSB3aWxsIGFwcGVhci4gVGhpcyBzaG91bGQgbG9vayBzaW1pbGFyIHRvIHRoYXRbXjJdOiANCg0KIVtdKC4vaW1hZ2VzLzIwMjQxMTA3MTgwMDE0LnBuZykNCg0KV2hlbiB5b3UgY2xvc2UgdGhlIHdpbmRvdyB1c2luZyBgWGAgKHRvcCByaWdodCBvZiB0aGUgd2luZG93KSB5b3UgZXhpdCB0aGUgDQpkYXRhIHJlZ2lzdGVyaW5nIGZvcm0uDQoNClteMl06IEl0IHdpbGwgbm90IGJlIGV4YWN0bHkgaWRlbnRpY2FsLCBiZWNhdXNlIHRoZXJlIGFyZSBzdGlsbCBzb21lIGRpc2N1c3Npb24gYWJvdXQNCnRoZSBmaWVsZCBjaG9pY2UgYW5kIHRoZWlyIG5hbWluZy4NCg0KIyBXb3JraW5nIHdpdGggV0hPTkVUIA0KDQojIyBFbnRlcmluZyBkYXRhDQoNCkVhY2ggdGltZSB5b3UgaGF2ZSBjbG9zZWQgV0hPTkVULCB5b3Ugd2lsbCByZW9wZW4gdGhlIGRhdGEgZmlsZSB5b3UgYXJlIHN0YXJ0ZWQNCnRvIHJlZ2lzdGVyIHRoZSBkYXRhIGludG8uDQoNClNlbGVjdCBgRGF0YSBlbnRyeWAgIHRoZW4gYE9wZW4gZGF0YSBmaWxlYCBhbmQgY2hvb3NlIHRoZSBmaWxlIHRoYXQgeW91IHNhdmVkIGluIHRoZSBwcmV2aW91cyBzZWN0aW9uLg0KDQo+IEVudGVyIHRoZSBkYXRhIGZvciBzZXZlcmFsIGlzb2xhdGVzIChUcmFpbmluZyBzZXNzaW9uIGRvbmUgd2l0aCBKYW5pY2UpLiANCg0KVGhlIGRhdGEgeW91IHJlZ2lzdGVyZWQgaXMgc2F2ZWQgd2hlbiB5b3UgY2xpY2sgb24gYFNhdmUgaXNvbGF0ZWANCg0KWW91IGNhbiBoYXZlIGEgbG9vayBhdCB0aGUgZGF0YSB5b3UgaGF2ZSByZWdpc3RlcmVkIGJ5IGNsaWNraW5nIG9uIGBWaWV3IGRhdGFiYXNlYC4gVGhpcyBjYW4gYWxsb3cgeW91IHRvIGhhdmUgYW4gb3ZlcnZpZXcgYW5kDQpjb3JyZWN0IGV2ZW50dWFsIG1pc3Rha2VzIGR1cmluZyByZWdpc3RlcmluZywgd2hlbiB5b3UgYXJlIHVzaW5nIHlvdXIgbGFiIG5vdGVzLiAgDQoNClRvIGdvICoqYmFjayB0byB0aGUgZm9ybSoqIGZvciByZWdpc3RlcmluZyBkYXRhLCBjbGljayBvbiBgQ29udGludWVgDQoNClRvIGV4aXQgdGhlIGZvcm0gY2xpY2sgb24gYEV4aXRgDQoNCiMjIEJhY2tpbmcgdXAgeW91ciBkYXRhDQoNCioqPG1hcms+PGI+SU1QT1JUQU5UIDogIHlvdSBkYXRhIGhhcyB0byBiZSBiYWNrdXAgcmVndWxhcmx5IGFuZCBwdXQgb24gYSBzaGFyZWQgZGlyZWN0b3J5IHdoZXJlIHdlIGNhbiBhY2Nlc3MgaXQuPC9iPjwvbWFyaz4qKg0KVGhpcyBpcyBpbXBvcnRhbnQgYmVjYXVzZSBpZiB0aGVyZSBpcyBhIHByb2JsZW0gd2l0aCB5b3VyIGNvbXB1dGVyLCBub3QgYWxsIHlvdXIgd29yayB3aWxsIGJlIGxvc3QuIA0KDQpOZXZlciB3b3JrIG1vcmUgdGhhbiBoYWxmIGEgZGF5IG9uIGRhdGEgcmVnaXN0ZXJpbmcgd2l0aG91dCBiYWNraW5nIHVwIHlvdXIgZGF0YQ0KDQotIFsgXSBQbGVhc2UgY3JlYXRlIGEgYmFja3VwIG9mIHlvdXIgZGF0YSBpbiBHb29nbGUgZHJpdmUgZm9yIElOSUtBIHByb2plY3QgaW4gdGhlIGBQaERfQVJFQSBkaXJlY3RvcnlgIGluIHlvdXIgb3duIHN1Yi1kaXJlY3RvcnkuIFdlIHJlY29tbWVuZCB5b3UgY3JlYXRlIGEgZm9sZGVyIG5hbWVkIFdIT05FVF9kYXRhIGluIHlvdXIgb3duIHN1Yi1kaXJlY3Rvcnkgd2hlcmUgeW91IHdpbGwgZGVwb3NpdCB0aGUgYmFja3Vwcy4gDQoNCiMjIyBTb2x1dGlvbiB2aWEgV0hPTkVUIA0KDQpUbyBjcmVhdGUgYSBmaWxlIGNvbnRhaW5pbmcgdGhlIGJhY2t1cCBvZiB5b3VyIGRhdGE6IA0Kc2VsZWN0IGBEYXRhIGVudHJ5YCB0aGVuIGBDb21iaW5lLCBleHBvcnQgb3IgZW5jcnlwdCBkYXRhIGZpbGVzYA0KDQohW10oLi9pbWFnZXMvMjAyNDExMDcxODExNDQucG5nKQ0KDQpUaGVuIGNsaWNrIG9uIGBEYXRhIGZpbGVzYCwgc2VsZWN0IHRoZSBmaWxlIGFuZCB1c2UgdGhlICoqYXJyb3cgZGlyZWN0ZWQgdG8gdGhlIHJpZ2h0KiogdG8gYWRkIHRoZSBmaWxlIHRvIHRoZSBgRGF0YSBmaWxlcyBwYW5lbGAgKHRoZSBsZWZ0IGFycm93IGFsbG93cyB0byByZW1vdmUgdGhpcyBpZiB5b3UgaGF2ZSBkb25lIGEgbWlzdGFrZSkgIGFuZCBjbGljayBgb2tgDQoNCiFbXSguL2ltYWdlcy8yMDI0MTEwNzE4MTIyNi5wbmcpDQoNClRoZSBwcmV2aW91cyBwYW5lbCBpcyBub3cgdXBkYXRlZC4gDQoNCi0gVXNlIGBCcm93c2VgIHRvIGNob29zZSB3aGVyZSB5b3Ugd2lsbCBzYXZlIHRoZSBmaWxlIChpdCBtdXN0IGJlIGVhc3kgb2YgYWNjZXNzIHNvIHlvdSBjYW4gY29weSB0aGlzIGRhdGEgdG8geW91ciBiYWNrdXAgYXJlYSBvbiBHb29nbGUgZHJpdmUpDQoNCjx1Pk5hbWluZyBydWxlczo8L3U+DQoNClBsZWFzZSBzYXZlIHRoZSBiYWNrdXAgdXNpbmcgYSBmaWxlIG5hbWUgY29uc3RpdHV0ZWQgYXMgc3VjaCA6IGBkYXRlX09yaWdpbmFsTmFtZS5zcWxpdGVgDQoNCi0gVHlwZSB0aGUgZGF0ZSAoSVNPIGZvcm1hdCBlLmcuLiBgMjAyNC0xMS0wN2ApIC4gSWYgeW91IHJlYWxseSB3YW50IGhvdXJzIG1pbnV0ZXMgYW5kIHNlY29uZHMsIGRvOiBgMjAyNC0xMS0wN18xOC0xNS0wMGAgVW5sZXNzIHlvdSBleHBvcnQgeW91ciBkYXRhIHNldmVyYWwgdGltZXMgYSBkYXkgSSBkbyBub3QgdGhpbmsgaXRzIG5lY2Vzc2FyeS4gDQo+IFRoaXMgaXMgYSBkZXZpYXRpb24gZnJvbSBJU08gZm9ybWF0LCBidXQgaXQgd2lsbCB3b3JrIGZvciBhIGNvbXB1dGVyIGZpbGUgZXhwb3J0ZWQgYXQgMThoIDE1bWluIDBzLg0KDQotIFRoZSBvcmlnaW5hbCBuYW1lIG9mIG15IGZpbGUgaXMgYFRaQS1JTklLQV9UWi0yMDI0Mi5zcWxpdGVgIA0KLSBUaGUgZmluYWwgbmFtZSBpcyB0aGVuIGAyMDI0LTExLTA3X1RaQS1JTklLQV9UWi0yMDI0Mi5zcWxpdGVgDQoNCg0KVGhlbiBjbGljayBvbiBgQ29tYmluZWAgKHdlIGRvIG5vdCBjb21iaW5lIGRhdGEgYnV0IHRoaXMgYWxsb3dzIGV4cG9ydGluZyB0aGUgZGF0YSkNClRoZW4gY2xpY2sgb24gYEV4aXRgDQoNCioqVGhlbiB5b3Ugd2lsbCBuZWVkIHRvIHVwbG9hZCB0aGlzIGZpbGUgb24gSU5JS0EgR29vZ2xlIGRyaXZlIHRvIHlvdXIgYmFja3VwIGFyZWEuKioNCg0KIyMjIFNvbHV0aW9uIHZpYSBmaWxlIGV4cGxvcmVyIA0KDQotIEZpbmQgd2hlcmUgdGhlIGRhdGEgZnJvbSBXSE9ORVQgZGF0YSBpcyByZWdpc3RlcmVkLiBGb3IgbWUgaXQgaXMgcmVnaXN0ZXJlZCANCmluIGBDOi9XSE9ORVQvRGF0YWAgYW5kIHRoZSBvcmlnaW5hbCBXSE9ORVQgZmlsZSBpcyBjYWxsZWQgYFRaQS1JTklLQV9UWi0yMDI0LnNxbGl0ZWANCi0gY29weSAoYGN0cmwgKyBDYCkgb3IgcmlnaHQgY2xpY2sgd2l0aCB0aGUgIG1vdXNlDQotIE5hdmlnYXRlIHRvIHRoZSBiYWNrdXAgc2F2ZSBsb2NhdGlvbiBzYXZlIGxvY2F0aW9uIA0KLSBwYXN0ZSAoYGN0cmwgKyBWYCkgb3IgcmlnaHQgY2xpY2sgcGFzdGUgd2l0aCB0aGUgbW91c2UNCi0gcmVuYW1lIHRoZSBmaWxlIGFjY29yZGluZyB0byB0aGUgbmFtaW5nIHJ1bGVzIGRlc2NyaWJlZCBhYm92ZSwgaXQgc2hvdWxkIGFjY29yZGluZyB0byBteSBleGFtcGxlIGJlIGAyMDI0LTExLTA3X1RaQS1JTklLQV9UWi0yMDI0Mi5zcWxpdGVgDQoNCioqVGhlbiB5b3Ugd2lsbCBuZWVkIHRvIHVwbG9hZCB0aGlzIGZpbGUgb24gSU5JS0EgR29vZ2xlIGRyaXZlIHRvIHlvdXIgYmFja3VwIGFyZWEuKioNCg0KIyBDaGFuZ2luZyBMQUIgY29uZmlndXJhdGlvbg0KDQojIyBBZ2dyZWVtZW50IHdpdGggTlZJIHRlYW0gYmVmb3JlIGNoYW5naW5nIExBQiBjb25maWd1cmF0aW9uDQoNClNob3VsZCB5b3UgbmVlZCAobWF5YmUgYXQgdGhlIGJlZ2lubmluZyBvZiBkYXRhIHJlZ2lzdGVyaW5nIEFORCANCioqaW4gYWdyZWVtZW50IHdpdGggdGhlIHRlYW1zIG1lbWJlcnMgKEphbmljZSAmIENhbWlsbGEpKioNCmR1cmluZyBtZWV0aW5ncywgeW91IG1heSBoYXZlIHRvIHJlcGxhY2UgdGhlIG9yaWdpbmFsIGxhYg0KY29uZmlndXJhdGlvbiBieSBhbm90aGVyIG9uZS4gVGhpcyBpcyBhIGZpbGUgdGhhdCBKYW5pY2Ugd2lsbCBwcm92aWRlLg0KDQoqKkJFRk9SRSoqIHlvdSByZXBsYWNlIHRoZSBsYWIgZmlsZSB3aXRoIGEgbmV3IG9uZSwgeW91IG5lZWQgdG8gZGVsZXRlIHRoZSBvbGQgb25lLg0KRWl0aGVyIGRpcmVjdGx5LCB1c2luZyBXSE9ORVQgT1IgeW91IGNhbiBkZWxldGUgdGhlIGZpbGUgdmlhIF93aW5kb3dzIGZpbGUgbWFuYWdlcl8uIA0KVGhlIGZpbGUgaXMgaW4gYEM6L1dIT05FVGAgYW5kIHN0YXJ0cyBieSBgTEFCYGVnIC4gYExBQlRaQS5JTklLQV9UWmANCg0KVGhlbiB5b3UgY2FuIGltcG9ydCB0aGUgbmV3IGxhYiBmaWxlIGFzIGRlc2NyaWJlZCBpbiB0aGUgZmlyc3Qgc2VjdGlvbiBvZiB0aGlzIA0KZG9jdW1lbnQuDQoNCiMjIFJlb3BlbmluZyB0aGUgZGF0YSANCg0KKipCRUZPUkUgcmVvcGVuaW5nIHRoZSBkYXRhIGZpbGUgYWZ0ZXIgYSBjaGFuZ2Ugb2YgbGFiIGNvbmZpZ3VyYXRpb24sIHlvdSBNVVNUDQpiYWNrdXAgdGhlIGRhdGEgZmlsZSBpbiBHb29nbGUgZHJpdmUsIGluY2x1ZGluZyB0aGUgZGF0ZSAoYW5kIGV2ZW50dWFsbHkgdGltZSkNCm9mIHRoZSBiYWNrdXAhLCBldmVuIGlmIHlvdSBkaWQgYSBiYWNrdXAganVzdCBiZWZvcmUuKioNCg0KVGhlbiB5b3UgY2FuIG9wZW4gdGhlIGRhdGEgdGhhdCB3YXMgY3JlYXRlZCB3aXRoIHRoZSBwcmV2aW91cyBsYWIgY29uZmlndXJhdGlvbi4NCkl0IG1pZ2h0IGFzayB5b3UgdG8gcmVtb3ZlIG9yIG1ha2Ugc29tZSBjaGFuZ2UuICoqSWYgV0hPTkVUIHNvZnR3YXJlIGFza3MNCnlvdSB0byByZW1vdmUgY29sdW1ucyB0aGF0DQpjb250YWluIGltcG9ydGFudCBpbmZvcm1hdGlvbiwgeW91IHNob3VsZCBoYXZlIGRpc2N1c3NlZCB0aGlzIHdpdGggdGhlIElOSUtBIA0KdGVhbSBtZW1iZXJzIGF0IE5WSS4gSWYgdGhpcyBoYXMgbm90IGJlZW4gZGlzY3Vzc2VkLCB0aGlzIGlzIG5vdCBnb29kLiBQbGVhc2UNCnRha2UgdGhpcyB1cCB3aXRoIHRoZSB0ZWFtIG1lbWJlcnMuKioNCg0KDQoNCkJhY2sgdG8gW0luZGV4XShpbmRleC5odG1sKQ==