<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugzilla.yoctoproject.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.6"
          urlbase="https://bugzilla.yoctoproject.org/"
          
          maintainer="it-coreprojects-helpdesk@linuxfoundation.org"
>

    <bug>
          <bug_id>9475</bug_id>
          
          <creation_ts>2016-04-18 12:49:53 +0000</creation_ts>
          <short_desc>db locking - Nothing happens when you click the &quot;Create custom image&quot; button</short_desc>
          <delta_ts>2016-08-22 10:58:15 +0000</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>7</classification_id>
          <classification>Build System, Metadata &amp; Runtime</classification>
          <product>Toaster</product>
          <component>toaster</component>
          <version>unspecified</version>
          <rep_platform>x86</rep_platform>
          <op_sys>Multiple</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>Medium+</priority>
          <bug_severity>normal</bug_severity>
          <target_milestone>2.2 M3</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Belen Barros Pena">belen.barros.pena</reporter>
          <assigned_to name="Elliot Smith">elliot.smith</assigned_to>
          <cc>belen.barros.pena</cc>
    
    <cc>brian.avery</cc>
    
    <cc>jessica.zhang</cc>
    
    <cc>stanciux.mihail</cc>
          
          <qa_contact name="Libertad">libertad.gonzalez.de.la.cruz</qa_contact>
          <cf_os>---</cf_os>
          <cf_regression_type>---</cf_regression_type>
          
          <cf_docchange>No (bug/feature does not impact docs)</cf_docchange>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>61336</commentid>
    <comment_count>0</comment_count>
      <attachid>3130</attachid>
    <who name="Belen Barros Pena">belen.barros.pena</who>
    <bug_when>2016-04-18 12:49:53 +0000</bug_when>
    <thetext>Created attachment 3130
browser console output

Steps to reproduce:

1. Create a Toaster project

2. Build an image (something big might give you a better chance to reproduce the problem: core-image-sato, for example, although I&apos;ve seen it with core-image-minimal as well)

3. When the build completes, go to the &quot;New custom image&quot; page

4. Search for the image you built in step 2 and click its &quot;customise&quot; button

5. Enter a name for your new custom image and click the &quot;Create custom image&quot; button

Nothing happens. The dialog is not dismissed, and no error is shown, but the custom image is created (you can see it if you navigate to the &quot;custom images&quot; page). I&apos;ve attached the browser console log output.

I have not been able to reproduce this reliable (sometimes it happens, sometimes it doesn&apos;t), but it seems to happen more often when you select a big image as the base image, or when you have a build running at the time of creating the custom image.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>61487</commentid>
    <comment_count>1</comment_count>
    <who name="Elliot Smith">elliot.smith</who>
    <bug_when>2016-04-21 11:13:33 +0000</bug_when>
    <thetext>As discussed in the Toaster weekly meeting, this appears to be caused by database locking (again).

The solution discussed involved serialising db access, possibly using Celery.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>61922</commentid>
    <comment_count>2</comment_count>
    <who name="Elliot Smith">elliot.smith</who>
    <bug_when>2016-05-04 10:49:29 +0000</bug_when>
    <thetext>An update on work done on this so far:

* I refactored buildinfohelper to channel all database writes through a DatabaseWriter class.
* I looked into using Celery to queue database writes. To do this, I made use of redislite as the Celery broker. This means that a Redis server can be embedded into Toaster, rather than requiring a separate Redis server start. I then reworked DatabaseWriter to push database write tasks onto a Celery queue.

Issues which have come up so far:

(1) My naive approach was to attempt to let Celery handle database writes asynchronously. This doesn&apos;t work, of course, as if buildinfohelper writes record A to the database then records B, C, D afterwards (for example), records B, C and D may depend on A (e.g. if adding tasks to a build). This means that the database writes can&apos;t all be delayed, but have to be done in batches. Celery provides an API for batching related tasks together using chain(), but I haven&apos;t attempted this yet, mainly because of (2)...

(2) redislite seems buggy and unreliable. It will occasionally randomly crash, for some reason pulling running apps on my laptop down with it (e.g. Chrome, rhythmbox). It also hogs so many system resources that bash can become unable to fork processes (I&apos;ve never seen any other program do this). For these reasons, I don&apos;t think redislite is a reliable or practical solution, as it could introduce numerous other problems.

The alternative to redislite is to use Redis proper. However, this is not trivial to set up, and couldn&apos;t be easily done within our current Toaster startup sequence. It would require a user to download and configure Redis themselves.

Also, if we need a Redis server to be set up, we may as well get a user to set up MySQL, as this will fix the database locking issues anyway, without needing Celery.

The only other stable Celery broker is RabbitMQ, which also requires some setup. There are unstable brokers, but these have big warnings and caveats listed (http://docs.celeryproject.org/en/latest/getting-started/brokers/index.html). 

So, my conclusion is that we have a few options:

A. The only reliable way to use Celery would be to install a proper, standalone server as a broker. We would also need to do more work to modify Toaster so that it batches related database writes sensibly.

B. As stated above, the db locking we see could also be solved by setting up MySQL. This is no more complicated than setting up Celery + Redis/RabbitMQ.

C. We could create our own solution within Toaster to deal with this (I had a thought about running a separate REST API or Python app which all db writes are routed through). This way we could maintain Toaster as a standalone app which uses SQLite and doesn&apos;t need any complicated setup for Celery/MySQL etc.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>62140</commentid>
    <comment_count>3</comment_count>
    <who name="Elliot Smith">elliot.smith</who>
    <bug_when>2016-05-12 11:37:26 +0000</bug_when>
    <thetext>I&apos;m upping my estimate, as I&apos;m not sure the approach I&apos;ve taken so far will make much difference to db locking.

Django is perfectly capable of causing db locking to happen on its own, even if other processes accessing the database are replaced or removed.

I think I need to restart. It might make more sense to deal with this in steps instead:

1. Figure out a way to compare two database states so it&apos;s possible to determine whether changes made during refactoring of buildinfohelper are breaking stuff. I missed this step on my first pass, which made it difficult to figure out how something was broken when things started going wrong.
2. Remove runbuilds, replacing its functionality with something in the web app part of Toaster.
3. Provide a REST API for Toaster models using Django REST Framework.
4. Modify buildinfohelper so that it doesn&apos;t do any direct db access, and only uses the REST API.

By following these steps, we are improving Toaster&apos;s architecture and making buildinfohelper easier to refactor, even if we fail to get rid of database locking.

I have made progress towards parts 3 and 4 of this, but given the complexity and fragility of buildinfohelper, I think I need to take a more cautious approach, so that I can be sure that I don&apos;t break anything as I go along. The work I&apos;ve done so far looked promising, but I ended up running into problems which were very complex to debug, as I had no frame of reference to understand why stuff was breaking.

Completing 1, perhaps by writing a script which can compare the records in two SQLite databases for a particular build target (e.g. core-image-minimal), would enable steps 3 and 4 to be carried out more carefully.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>62368</commentid>
    <comment_count>4</comment_count>
    <who name="Elliot Smith">elliot.smith</who>
    <bug_when>2016-05-20 16:17:57 +0000</bug_when>
    <thetext>The log file provided by Belen indicates on the occasion when the error occurred and she took the log, database locking caused a 500 error from the server. This would certainly produce the behaviour she noted.

Moving to MySQL for the back-end database should alleviate most, if not all, database locking issues due to using SQLite as a back-end.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>62377</commentid>
    <comment_count>5</comment_count>
    <who name="Elliot Smith">elliot.smith</who>
    <bug_when>2016-05-23 07:05:48 +0000</bug_when>
    <thetext>As a work-around, I will delay all transitions between pages so that the database can &quot;settle&quot; (after database writes) before it&apos;s queried for the new page content.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>64041</commentid>
    <comment_count>6</comment_count>
    <who name="Elliot Smith">elliot.smith</who>
    <bug_when>2016-07-15 14:23:13 +0000</bug_when>
    <thetext>Submitted a patch to just show the loading spinner when creating a custom image:
https://lists.yoctoproject.org/pipermail/toaster/2016-July/004998.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>64153</commentid>
    <comment_count>7</comment_count>
    <who name="Elliot Smith">elliot.smith</who>
    <bug_when>2016-07-19 11:15:27 +0000</bug_when>
    <thetext>Moving to M3 as the review highlighted an issue which needs to be resolved (both the spinner on the button and the page spinner show at the same time, and we only want one of these two to be visible).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>64408</commentid>
    <comment_count>8</comment_count>
    <who name="Elliot Smith">elliot.smith</who>
    <bug_when>2016-07-25 08:54:47 +0000</bug_when>
    <thetext>Submitted for review:
https://lists.yoctoproject.org/pipermail/toaster/2016-July/005047.html</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>3130</attachid>
            <date>2016-04-18 12:49:53 +0000</date>
            <delta_ts>2016-04-18 12:49:53 +0000</delta_ts>
            <desc>browser console output</desc>
            <filename>chrome-console-output</filename>
            <type>application/octet-stream</type>
            <size>15431</size>
            <attacher name="Belen Barros Pena">belen.barros.pena</attacher>
            
              <data encoding="base64">RmFpbGVkIHRvIGxvYWQgcmVzb3VyY2U6IHRoZSBzZXJ2ZXIgcmVzcG9uZGVkIHdpdGggYSBzdGF0
dXMgb2YgNTAwIChJTlRFUk5BTCBTRVJWRVIgRVJST1IpCkNhbGwgZmFpbGVkCk9iamVjdApQcm9i
bGVtIHdpdGggeGhyIGNhbGwKSU5URVJOQUwgU0VSVkVSIEVSUk9SCk9wZXJhdGlvbmFsRXJyb3Ig
YXQgL3RvYXN0ZXJndWkveGhyX2N1c3RvbXJlY2lwZS8KZGF0YWJhc2UgaXMgbG9ja2VkCgpSZXF1
ZXN0IE1ldGhvZDogUE9TVApSZXF1ZXN0IFVSTDogaHR0cDovL2ljYXJ1cy5pc3cuaW50ZWwuY29t
OjgwMDAvdG9hc3Rlcmd1aS94aHJfY3VzdG9tcmVjaXBlLwpEamFuZ28gVmVyc2lvbjogMS44LjEy
ClB5dGhvbiBFeGVjdXRhYmxlOiAvaG9tZS9iZWxlbi9wb2t5L3ZlbnYvYmluL3B5dGhvbgpQeXRo
b24gVmVyc2lvbjogMi43LjYKUHl0aG9uIFBhdGg6IFsnL2hvbWUvYmVsZW4vcG9reS9iaXRiYWtl
L2Jpbi8uLi9saWInLCAnL2hvbWUvYmVsZW4vcG9reS9iaXRiYWtlL2xpYicsICcvaG9tZS9iZWxl
bi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXInLCAnL2hvbWUvYmVsZW4vcG9reS92ZW52L2xpYi9w
eXRob24yLjcnLCAnL2hvbWUvYmVsZW4vcG9reS92ZW52L2xpYi9weXRob24yLjcvcGxhdC14ODZf
NjQtbGludXgtZ251JywgJy9ob21lL2JlbGVuL3Bva3kvdmVudi9saWIvcHl0aG9uMi43L2xpYi10
aycsICcvaG9tZS9iZWxlbi9wb2t5L3ZlbnYvbGliL3B5dGhvbjIuNy9saWItb2xkJywgJy9ob21l
L2JlbGVuL3Bva3kvdmVudi9saWIvcHl0aG9uMi43L2xpYi1keW5sb2FkJywgJy91c3IvbGliL3B5
dGhvbjIuNycsICcvdXNyL2xpYi9weXRob24yLjcvcGxhdC14ODZfNjQtbGludXgtZ251JywgJy91
c3IvbGliL3B5dGhvbjIuNy9saWItdGsnLCAnL2hvbWUvYmVsZW4vcG9reS92ZW52L2xvY2FsL2xp
Yi9weXRob24yLjcvc2l0ZS1wYWNrYWdlcycsICcvaG9tZS9iZWxlbi9wb2t5L3ZlbnYvbGliL3B5
dGhvbjIuNy9zaXRlLXBhY2thZ2VzJ10KU2VydmVyIHRpbWU6IE1vbiwgMTggQXByIDIwMTYgMTM6
Mjk6MjEgKzAxMDAKSW5zdGFsbGVkIEFwcGxpY2F0aW9uczoKKCdkamFuZ28uY29udHJpYi5hdXRo
JywKICdkamFuZ28uY29udHJpYi5jb250ZW50dHlwZXMnLAogJ2RqYW5nby5jb250cmliLm1lc3Nh
Z2VzJywKICdkamFuZ28uY29udHJpYi5zZXNzaW9ucycsCiAnZGphbmdvLmNvbnRyaWIuYWRtaW4n
LAogJ2RqYW5nby5jb250cmliLnN0YXRpY2ZpbGVzJywKICdkamFuZ28uY29udHJpYi5odW1hbml6
ZScsCiAnYmxkY29sbGVjdG9yJywKICd0b2FzdGVybWFpbicsCiAnYmxkY29udHJvbCcsCiAnb3Jt
JywKICd0b2FzdGVyZ3VpJykKSW5zdGFsbGVkIE1pZGRsZXdhcmU6CignZGphbmdvLm1pZGRsZXdh
cmUuY29tbW9uLkNvbW1vbk1pZGRsZXdhcmUnLAogJ2RqYW5nby5jb250cmliLnNlc3Npb25zLm1p
ZGRsZXdhcmUuU2Vzc2lvbk1pZGRsZXdhcmUnLAogJ2RqYW5nby5taWRkbGV3YXJlLmNzcmYuQ3Ny
ZlZpZXdNaWRkbGV3YXJlJywKICdkamFuZ28uY29udHJpYi5hdXRoLm1pZGRsZXdhcmUuQXV0aGVu
dGljYXRpb25NaWRkbGV3YXJlJywKICdkamFuZ28uY29udHJpYi5tZXNzYWdlcy5taWRkbGV3YXJl
Lk1lc3NhZ2VNaWRkbGV3YXJlJykKClRyYWNlYmFjazoKRmlsZSAiL2hvbWUvYmVsZW4vcG9reS92
ZW52L2xvY2FsL2xpYi9weXRob24yLjcvc2l0ZS1wYWNrYWdlcy9kamFuZ28vY29yZS9oYW5kbGVy
cy9iYXNlLnB5IiBpbiBnZXRfcmVzcG9uc2UKICAxMzIuICAgICAgICAgICAgICAgICAgICAgcmVz
cG9uc2UgPSB3cmFwcGVkX2NhbGxiYWNrKHJlcXVlc3QsICpjYWxsYmFja19hcmdzLCAqKmNhbGxi
YWNrX2t3YXJncykKRmlsZSAiL2hvbWUvYmVsZW4vcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3Rv
YXN0ZXJndWkvdmlld3MucHkiIGluIHdyYXBwZXIKICAyMDc2LiAgICAgICAgICAgICByZXR1cm4g
SHR0cFJlc3BvbnNlKGpzb25maWx0ZXIoZnVuKCphcmdzLCAqKmt3ZHMpKSwKRmlsZSAiL2hvbWUv
YmVsZW4vcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3RvYXN0ZXJndWkvdmlld3MucHkiIGluIHho
cl9jdXN0b21yZWNpcGUKICAyNTAzLiAgICAgICAgICAgICAgICAgInBhY2thZ2VzIiA6IHJlY2lw
ZS5nZXRfYWxsX3BhY2thZ2VzKCkuY291bnQoKSwKRmlsZSAiL2hvbWUvYmVsZW4vcG9reS9iaXRi
YWtlL2xpYi90b2FzdGVyL29ybS9tb2RlbHMucHkiIGluIGdldF9hbGxfcGFja2FnZXMKICAxNTI4
LiAgICAgICAgIHNlbGYudXBkYXRlX3BhY2thZ2VfbGlzdCgpCkZpbGUgIi9ob21lL2JlbGVuL3Bv
a3kvYml0YmFrZS9saWIvdG9hc3Rlci9vcm0vbW9kZWxzLnB5IiBpbiB1cGRhdGVfcGFja2FnZV9s
aXN0CiAgMTUyMC4gICAgICAgICAgICAgc2VsZi5pbmNsdWRlc19zZXQuYWRkKGN1c3RfaW1nX3Ap
CkZpbGUgIi9ob21lL2JlbGVuL3Bva3kvdmVudi9sb2NhbC9saWIvcHl0aG9uMi43L3NpdGUtcGFj
a2FnZXMvZGphbmdvL2RiL21vZGVscy9maWVsZHMvcmVsYXRlZC5weSIgaW4gYWRkCiAgOTgyLiAg
ICAgICAgICAgICAgICAgc2VsZi5fYWRkX2l0ZW1zKHNlbGYuc291cmNlX2ZpZWxkX25hbWUsIHNl
bGYudGFyZ2V0X2ZpZWxkX25hbWUsICpvYmpzKQpGaWxlICIvaG9tZS9iZWxlbi9wb2t5L3ZlbnYv
bG9jYWwvbGliL3B5dGhvbjIuNy9zaXRlLXBhY2thZ2VzL2RqYW5nby9kYi9tb2RlbHMvZmllbGRz
L3JlbGF0ZWQucHkiIGluIF9hZGRfaXRlbXMKICAxMTA2LiAgICAgICAgICAgICAgICAgICAgICAg
ICBmb3Igb2JqX2lkIGluIG5ld19pZHMKRmlsZSAiL2hvbWUvYmVsZW4vcG9reS92ZW52L2xvY2Fs
L2xpYi9weXRob24yLjcvc2l0ZS1wYWNrYWdlcy9kamFuZ28vZGIvbW9kZWxzL3F1ZXJ5LnB5IiBp
biBidWxrX2NyZWF0ZQogIDM5Mi4gICAgICAgICAgICAgICAgICAgICBzZWxmLl9iYXRjaGVkX2lu
c2VydChvYmpzX3dpdGhvdXRfcGssIGZpZWxkcywgYmF0Y2hfc2l6ZSkKRmlsZSAiL2hvbWUvYmVs
ZW4vcG9reS92ZW52L2xvY2FsL2xpYi9weXRob24yLjcvc2l0ZS1wYWNrYWdlcy9kamFuZ28vZGIv
bW9kZWxzL3F1ZXJ5LnB5IiBpbiBfYmF0Y2hlZF9pbnNlcnQKICA5MzcuICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzaW5nPXNlbGYuZGIpCkZpbGUgIi9ob21l
L2JlbGVuL3Bva3kvdmVudi9sb2NhbC9saWIvcHl0aG9uMi43L3NpdGUtcGFja2FnZXMvZGphbmdv
L2RiL21vZGVscy9tYW5hZ2VyLnB5IiBpbiBtYW5hZ2VyX21ldGhvZAogIDEyNy4gICAgICAgICAg
ICAgICAgIHJldHVybiBnZXRhdHRyKHNlbGYuZ2V0X3F1ZXJ5c2V0KCksIG5hbWUpKCphcmdzLCAq
Kmt3YXJncykKRmlsZSAiL2hvbWUvYmVsZW4vcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL29ybS9t
b2RlbHMucHkiIGluIF9pbnNlcnQKICA2OC4gICAgICAgICAgICAgcmV0dXJuIF9iYXNlX2luc2Vy
dChzZWxmLCAqYXJncywgKiprd2FyZ3MpCkZpbGUgIi9ob21lL2JlbGVuL3Bva3kvdmVudi9sb2Nh
bC9saWIvcHl0aG9uMi43L3NpdGUtcGFja2FnZXMvZGphbmdvL2RiL21vZGVscy9xdWVyeS5weSIg
aW4gX2luc2VydAogIDkyMC4gICAgICAgICByZXR1cm4gcXVlcnkuZ2V0X2NvbXBpbGVyKHVzaW5n
PXVzaW5nKS5leGVjdXRlX3NxbChyZXR1cm5faWQpCkZpbGUgIi9ob21lL2JlbGVuL3Bva3kvdmVu
di9sb2NhbC9saWIvcHl0aG9uMi43L3NpdGUtcGFja2FnZXMvZGphbmdvL2RiL21vZGVscy9zcWwv
Y29tcGlsZXIucHkiIGluIGV4ZWN1dGVfc3FsCiAgOTc0LiAgICAgICAgICAgICAgICAgY3Vyc29y
LmV4ZWN1dGUoc3FsLCBwYXJhbXMpCkZpbGUgIi9ob21lL2JlbGVuL3Bva3kvdmVudi9sb2NhbC9s
aWIvcHl0aG9uMi43L3NpdGUtcGFja2FnZXMvZGphbmdvL2RiL2JhY2tlbmRzL3V0aWxzLnB5IiBp
biBleGVjdXRlCiAgNzkuICAgICAgICAgICAgIHJldHVybiBzdXBlcihDdXJzb3JEZWJ1Z1dyYXBw
ZXIsIHNlbGYpLmV4ZWN1dGUoc3FsLCBwYXJhbXMpCkZpbGUgIi9ob21lL2JlbGVuL3Bva3kvdmVu
di9sb2NhbC9saWIvcHl0aG9uMi43L3NpdGUtcGFja2FnZXMvZGphbmdvL2RiL2JhY2tlbmRzL3V0
aWxzLnB5IiBpbiBleGVjdXRlCiAgNjQuICAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5jdXJz
b3IuZXhlY3V0ZShzcWwsIHBhcmFtcykKRmlsZSAiL2hvbWUvYmVsZW4vcG9reS92ZW52L2xvY2Fs
L2xpYi9weXRob24yLjcvc2l0ZS1wYWNrYWdlcy9kamFuZ28vZGIvdXRpbHMucHkiIGluIF9fZXhp
dF9fCiAgOTguICAgICAgICAgICAgICAgICBzaXgucmVyYWlzZShkal9leGNfdHlwZSwgZGpfZXhj
X3ZhbHVlLCB0cmFjZWJhY2spCkZpbGUgIi9ob21lL2JlbGVuL3Bva3kvdmVudi9sb2NhbC9saWIv
cHl0aG9uMi43L3NpdGUtcGFja2FnZXMvZGphbmdvL2RiL2JhY2tlbmRzL3V0aWxzLnB5IiBpbiBl
eGVjdXRlCiAgNjQuICAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5jdXJzb3IuZXhlY3V0ZShz
cWwsIHBhcmFtcykKRmlsZSAiL2hvbWUvYmVsZW4vcG9reS92ZW52L2xvY2FsL2xpYi9weXRob24y
Ljcvc2l0ZS1wYWNrYWdlcy9kamFuZ28vZGIvYmFja2VuZHMvc3FsaXRlMy9iYXNlLnB5IiBpbiBl
eGVjdXRlCiAgMzE4LiAgICAgICAgIHJldHVybiBEYXRhYmFzZS5DdXJzb3IuZXhlY3V0ZShzZWxm
LCBxdWVyeSwgcGFyYW1zKQoKRXhjZXB0aW9uIFR5cGU6IE9wZXJhdGlvbmFsRXJyb3IgYXQgL3Rv
YXN0ZXJndWkveGhyX2N1c3RvbXJlY2lwZS8KRXhjZXB0aW9uIFZhbHVlOiBkYXRhYmFzZSBpcyBs
b2NrZWQKUmVxdWVzdCBpbmZvcm1hdGlvbjoKR0VUOiBObyBHRVQgZGF0YQoKUE9TVDoKcHJvamVj
dCA9IHUnMicKYmFzZSA9IHUnMzM1JwpuYW1lID0gdSdtaW5pbWFsLWJlbGVuJwoKRklMRVM6IE5v
IEZJTEVTIGRhdGEKCkNPT0tJRVM6Cl9fdXRteiA9ICcyNDIwMDU5NzguMTQ1NDUzMzM2MS4xLjEu
dXRtY3NyPShkaXJlY3QpfHV0bWNjbj0oZGlyZWN0KXx1dG1jbWQ9KG5vbmUpJwptb3VzZXN0YXRz
X3ZpID0gJzdkM2JkN2UxMDI1NDA3NzdlYmNhJwp1dGFnX21haW4gPSAndl9pZDowMTUxY2U2ZGQ4
OTQwMDIyYzg5Yjc4MGYzYTEwMDUwNzkwMDQ5MDcxMDBiZDAkX3NuOjMkX3NzOjAkX3N0OjE0NTM0
NjU4MzYzMjQkX3BuOjMlM0JleHAtc2Vzc2lvbiRzZXNfaWQ6MTQ1MzQ2NDAzNjI2NCUzQmV4cC1z
ZXNzaW9uJGVscWlkOicKSURTSUQgPSAnYmJhcnJvc3AnCl9nYSA9ICdHQTEuMi43NTIwOTkzNTcu
MTQ1MjAxMDIwNicKc2Vzc2lvbmlkID0gJ3BxYmUyNHg5anZ3MTN2Z3pianFrY2o3Nmh0dWEyMmVp
JwpDdXJyZW50UGFnZUlEID0gJ2hvbWUnCmdhd2FwID0gJ0dBMS4yLjEwODQ1ODY5MjMuMTQ1MDg2
NzI4NCcKY3NyZnRva2VuID0gJ0hxZUZkOUgzelJER3YybjBSREZYRjlSZDlKQTBJVjFIJwpfX3V0
bWEgPSAnMjQyMDA1OTc4Ljc1MjA5OTM1Ny4xNDUyMDEwMjA2LjE0NTY4Mzk2NzIuMTQ1Njg0Mzg3
Mi43JwpDTkNhbXB1c0NvZGUgPSAnU0NMJwp3YV92aXNpdElkID0gJyU3QjEzZWU3M2Q5LTNhMjMt
NDk0NC0yNjZmLWUyNmMwMTYwMjEwZCU3RCcKCk1FVEE6CkJCQkFTRURJUiA9ICcvaG9tZS9iZWxl
bi9wb2t5L2JpdGJha2UvYmluLy4uJwp3c2dpLm11bHRpcHJvY2VzcyA9IEZhbHNlCkFMTF9QUk9Y
WSA9ICdodHRwOi8vcHJveHktdXMuaW50ZWwuY29tOjEwODAnCkhUVFBfUkVGRVJFUiA9ICdodHRw
Oi8vaWNhcnVzLmlzdy5pbnRlbC5jb206ODAwMC90b2FzdGVyZ3VpL3Byb2plY3QvMi9uZXdjdXN0
b21pbWFnZS8/bGltaXQ9MjUmcGFnZT0xJm9yZGVyYnk9bmFtZSZzZWFyY2g9LW1pbmltYWwmJwpI
VFRQX0hPU1QgPSAnaWNhcnVzLmlzdy5pbnRlbC5jb206ODAwMCcKaHR0cF9wcm94eSA9ICdodHRw
Oi8vcHJveHktdXMuaW50ZWwuY29tOjkxMScKU0VSVkVSX1NPRlRXQVJFID0gJ1dTR0lTZXJ2ZXIv
MC4xIFB5dGhvbi8yLjcuNicKU0NSSVBUX05BTUUgPSB1JycKSFRUUF9YX0NTUkZUT0tFTiA9ICdI
cWVGZDlIM3pSREd2Mm4wUkRGWEY5UmQ5SkEwSVYxSCcKU1NIX0NMSUVOVCA9ICcxMC4yNTIuMjQu
MTA0IDUzODQ1IDIyJwpSRVFVRVNUX01FVEhPRCA9ICdQT1NUJwpMT0dOQU1FID0gJ2JlbGVuJwpV
U0VSID0gJ2JlbGVuJwpIVFRQX09SSUdJTiA9ICdodHRwOi8vaWNhcnVzLmlzdy5pbnRlbC5jb206
ODAwMCcKUEFUSCA9ICcvaG9tZS9iZWxlbi9wb2t5L3NjcmlwdHM6L2hvbWUvYmVsZW4vcG9reS9i
aXRiYWtlL2JpbjovaG9tZS9iZWxlbi9wb2t5L3ZlbnYvYmluOi91c3IvbG9jYWwvc2JpbjovdXNy
L2xvY2FsL2JpbjovdXNyL3NiaW46L3Vzci9iaW46L3NiaW46L2JpbjovdXNyL2dhbWVzOi91c3Iv
bG9jYWwvZ2FtZXMnClFVRVJZX1NUUklORyA9ICcnCkhPTUUgPSAnL2hvbWUvYmVsZW4nClZJUlRV
QUxFTlZXUkFQUEVSX1NDUklQVCA9ICcvdXNyL3NoYXJlL3ZpcnR1YWxlbnZ3cmFwcGVyL3ZpcnR1
YWxlbnZ3cmFwcGVyLnNoJwp3c2dpLmVycm9ycyA9IDxvcGVuIGZpbGUgJzxzdGRlcnI+JywgbW9k
ZSAndycgYXQgMHg3ZjA1M2FmMzkxZTA+ClJVTl9NQUlOID0gJ3RydWUnCkxBTkcgPSAnZW5fR0Iu
VVRGLTgnClRFUk0gPSAneHRlcm0tMjU2Y29sb3InClNIRUxMID0gJy9iaW4vYmFzaCcKVFogPSAn
RXVyb3BlL0plcnNleScKSFRUUF9DT09LSUUgPSAnQ05DYW1wdXNDb2RlPVNDTDsgSURTSUQ9YmJh
cnJvc3A7IHdhX3Zpc2l0SWQ9JTdCMTNlZTczZDktM2EyMy00OTQ0LTI2NmYtZTI2YzAxNjAyMTBk
JTdEOyB1dGFnX21haW49dl9pZDowMTUxY2U2ZGQ4OTQwMDIyYzg5Yjc4MGYzYTEwMDUwNzkwMDQ5
MDcxMDBiZDAkX3NuOjMkX3NzOjAkX3N0OjE0NTM0NjU4MzYzMjQkX3BuOjMlM0JleHAtc2Vzc2lv
biRzZXNfaWQ6MTQ1MzQ2NDAzNjI2NCUzQmV4cC1zZXNzaW9uJGVscWlkOjsgZ2F3YXA9R0ExLjIu
MTA4NDU4NjkyMy4xNDUwODY3Mjg0OyBtb3VzZXN0YXRzX3ZpPTdkM2JkN2UxMDI1NDA3NzdlYmNh
OyBfX3V0bWE9MjQyMDA1OTc4Ljc1MjA5OTM1Ny4xNDUyMDEwMjA2LjE0NTY4Mzk2NzIuMTQ1Njg0
Mzg3Mi43OyBfX3V0bXo9MjQyMDA1OTc4LjE0NTQ1MzMzNjEuMS4xLnV0bWNzcj0oZGlyZWN0KXx1
dG1jY249KGRpcmVjdCl8dXRtY21kPShub25lKTsgQ3VycmVudFBhZ2VJRD1ob21lOyBfZ2E9R0Ex
LjIuNzUyMDk5MzU3LjE0NTIwMTAyMDY7IHNlc3Npb25pZD1wcWJlMjR4OWp2dzEzdmd6Ympxa2Nq
NzZodHVhMjJlaTsgY3NyZnRva2VuPUhxZUZkOUgzelJER3YybjBSREZYRjlSZDlKQTBJVjFIJwpM
QU5HVUFHRSA9ICdlbl9HQjplbicKUkVNT1RFX0FERFIgPSAnMTAuMjUyLjI0LjEwNCcKU0hMVkwg
PSAnMScKQ1NSRl9DT09LSUUgPSB1J0hxZUZkOUgzelJER3YybjBSREZYRjlSZDlKQTBJVjFIJwpR
VF9RUEFfUExBVEZPUk1USEVNRSA9ICdhcHBtZW51LXF0NScKd3NnaS51cmxfc2NoZW1lID0gJ2h0
dHAnCmh0dHBzX3Byb3h5ID0gJ2h0dHA6Ly9wcm94eS11cy5pbnRlbC5jb206OTEyJwpUT0FTVEVS
X0NPTkYgPSAnL2hvbWUvYmVsZW4vcG9reS9tZXRhLXBva3kvY29uZi90b2FzdGVyY29uZi5qc29u
JwpTRVJWRVJfUE9SVCA9ICc4MDAwJwpfVklSVFVBTEVOVldSQVBQRVJfQVBJID0gJyBta3ZpcnR1
YWxlbnYgcm12aXJ0dWFsZW52IGxzdmlydHVhbGVudiBzaG93dmlydHVhbGVudiB3b3Jrb24gYWRk
MnZpcnR1YWxlbnYgY2RzaXRlcGFja2FnZXMgY2R2aXJ0dWFsZW52IGxzc2l0ZXBhY2thZ2VzIHRv
Z2dsZWdsb2JhbHNpdGVwYWNrYWdlcyBjcHZpcnR1YWxlbnYgc2V0dmlydHVhbGVudnByb2plY3Qg
bWtwcm9qZWN0IGNkcHJvamVjdCBta3RtcGVudicKQkJfRU5WX0VYVFJBV0hJVEUgPSAnQUxMX1BS
T1hZIEJCX05PX05FVFdPUksgQkJfTlVNQkVSX1RIUkVBRFMgQkJfU1JDUkVWX1BPTElDWSBESVNU
Uk8gRlRQU19QUk9YWSBGVFBfUFJPWFkgR0lUX1BST1hZX0NPTU1BTkQgSFRUUFNfUFJPWFkgSFRU
UF9QUk9YWSBNQUNISU5FIE5PX1BST1hZIFBBUkFMTEVMX01BS0UgU0NSRUVORElSIFNES01BQ0hJ
TkUgU09DS1M1X1BBU1NXRCBTT0NLUzVfVVNFUiBTU0hfQUdFTlRfUElEIFNTSF9BVVRIX1NPQ0sg
U1RBTVBTX0RJUiBUQ0xJQkMgVENNT0RFIGFsbF9wcm94eSBmdHBfcHJveHkgZnRwc19wcm94eSBo
dHRwX3Byb3h5IGh0dHBzX3Byb3h5IG5vX3Byb3h5ICcKQ09OVEVOVF9MRU5HVEggPSAnMzcnCkhU
VFBfQ09OTkVDVElPTiA9ICdrZWVwLWFsaXZlJwpYREdfUlVOVElNRV9ESVIgPSAnL3J1bi91c2Vy
LzEwMDAnCkhUVFBfWF9SRVFVRVNURURfV0lUSCA9ICdYTUxIdHRwUmVxdWVzdCcKQ09NUF9XT1JE
QlJFQUtTID0gJyBcdFxuIlwnPjw7fCYoOicKVklSVFVBTF9FTlYgPSAnL2hvbWUvYmVsZW4vcG9r
eS92ZW52JwpmdHBfcHJveHkgPSAnaHR0cDovL3Byb3h5LXVzLmludGVsLmNvbTo5MTEnClNTSF9T
T0NLU19TRVJWRVIgPSAncHJveHktdXMuaW50ZWwuY29tOjEwODAnCkhUVFBfVVNFUl9BR0VOVCA9
ICdNb3ppbGxhLzUuMCAoTWFjaW50b3NoOyBJbnRlbCBNYWMgT1MgWCAxMF8xMF81KSBBcHBsZVdl
YktpdC81MzcuMzYgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvNDkuMC4yNjIzLjExMiBTYWZh
cmkvNTM3LjM2JwpQUzEgPSAnKHZlbnYpJHtkZWJpYW5fY2hyb290OisoJGRlYmlhbl9jaHJvb3Qp
fVxcdUBcXGg6XFx3XFwkICcKd3NnaS5tdWx0aXRocmVhZCA9IFRydWUKc29ja3NfcHJveHkgPSAn
aHR0cDovL3Byb3h5LXVzLmludGVsLmNvbToxMDgwJwpUT0FTVEVSX0RJUiA9ICcvaG9tZS9iZWxl
bi9wb2t5JwpYREdfU0VTU0lPTl9JRCA9ICcxMzQnCl8gPSAnL2hvbWUvYmVsZW4vcG9reS9iaXRi
YWtlL2Jpbi8uLi9saWIvdG9hc3Rlci9tYW5hZ2UucHknCkhUVFBfQUNDRVBUID0gJyovKicKd3Nn
aS5maWxlX3dyYXBwZXIgPSAnJwp3c2dpLnZlcnNpb24gPSAKQlVJTERESVIgPSAnL2hvbWUvYmVs
ZW4vcG9reS9idWlsZCcKU0VSVkVSX05BTUUgPSAnaWNhcnVzLmxvY2FsJwp3c2dpLnJ1bl9vbmNl
ID0gRmFsc2UKU1NIX1RUWSA9ICcvZGV2L3B0cy82JwpPTERQV0QgPSAnL2hvbWUvYmVsZW4vcG9r
eScKR0FURVdBWV9JTlRFUkZBQ0UgPSAnQ0dJLzEuMScKSFRUUF9BQ0NFUFRfTEFOR1VBR0UgPSAn
ZW4tVVMsZW47cT0wLjgnCndzZ2kuaW5wdXQgPSA8c29ja2V0Ll9maWxlb2JqZWN0IG9iamVjdCBh
dCAweDdmMDUxZjRmNWU1MD4KTk9ERV9QQVRIID0gJy91c3IvbGliL25vZGVqczovdXNyL2xpYi9u
b2RlX21vZHVsZXM6L3Vzci9zaGFyZS9qYXZhc2NyaXB0Jwpub19wcm94eSA9ICdpbnRlbC5jb20s
LmludGVsLmNvbSwxMC4wLjAuMC84LDE5Mi4xNjguMC4wLzE2LGxvY2FsaG9zdCwxMjcuMC4wLjAv
OCwxMzQuMTM0LjAuMC8xNicKUFdEID0gJy9ob21lL2JlbGVuL3Bva3kvYnVpbGQnClNFUlZFUl9Q
Uk9UT0NPTCA9ICdIVFRQLzEuMScKREpBTkdPX1NFVFRJTkdTX01PRFVMRSA9ICd0b2FzdGVybWFp
bi5zZXR0aW5ncycKQ09OVEVOVF9UWVBFID0gJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5j
b2RlZDsgY2hhcnNldD1VVEYtOCcKTUFJTCA9ICcvdmFyL21haWwvYmVsZW4nClNTSF9DT05ORUNU
SU9OID0gJzEwLjI1Mi4yNC4xMDQgNTM4NDUgMTAuMjM3LjIyNC4zNyAyMicKUkVNT1RFX0hPU1Qg
PSAnJwpIVFRQX0FDQ0VQVF9FTkNPRElORyA9ICdnemlwLCBkZWZsYXRlJwpHSVRfUFJPWFlfQ09N
TUFORCA9ICcvdXNyL2xvY2FsL2Jpbi9zb2Nrc19jb25uZWN0LnNoJwpQQVRIX0lORk8gPSB1Jy90
b2FzdGVyZ3VpL3hocl9jdXN0b21yZWNpcGUvJwoKU2V0dGluZ3M6ClVzaW5nIHNldHRpbmdzIG1v
ZHVsZSB0b2FzdGVybWFpbi5zZXR0aW5ncwpNT05USF9EQVlfRk9STUFUID0gJ0YgaicKU0VDVVJF
X0JST1dTRVJfWFNTX0ZJTFRFUiA9IEZhbHNlClVTRV9USE9VU0FORF9TRVBBUkFUT1IgPSBGYWxz
ZQpDU1JGX0NPT0tJRV9TRUNVUkUgPSBGYWxzZQpMQU5HVUFHRV9DT0RFID0gJ2VuLXVzJwpST09U
X1VSTENPTkYgPSAndG9hc3Rlcm1haW4udXJscycKTUFOQUdFUlMgPSAKU0lMRU5DRURfU1lTVEVN
X0NIRUNLUyA9IFtdCkRFRkFVTFRfQ0hBUlNFVCA9ICd1dGYtOCcKU0VTU0lPTl9TRVJJQUxJWkVS
ID0gJ2RqYW5nby5jb250cmliLnNlc3Npb25zLnNlcmlhbGl6ZXJzLkpTT05TZXJpYWxpemVyJwpT
VEFUSUNfUk9PVCA9ICcnCkFMTE9XRURfSE9TVFMgPSBbXQpNRVNTQUdFX1NUT1JBR0UgPSAnZGph
bmdvLmNvbnRyaWIubWVzc2FnZXMuc3RvcmFnZS5mYWxsYmFjay5GYWxsYmFja1N0b3JhZ2UnCkVN
QUlMX1NVQkpFQ1RfUFJFRklYID0gJ1tEamFuZ29dICcKU0VSVkVSX0VNQUlMID0gJ3Jvb3RAbG9j
YWxob3N0JwpTRUNVUkVfSFNUU19TRUNPTkRTID0gMApTVEFUSUNGSUxFU19GSU5ERVJTID0gClNF
U1NJT05fQ0FDSEVfQUxJQVMgPSAnZGVmYXVsdCcKU0VTU0lPTl9DT09LSUVfRE9NQUlOID0gTm9u
ZQpTRVNTSU9OX0NPT0tJRV9OQU1FID0gJ3Nlc3Npb25pZCcKVElNRV9JTlBVVF9GT1JNQVRTID0g
ClNFQ1VSRV9SRURJUkVDVF9FWEVNUFQgPSBbXQpEQVRBQkFTRVMgPSB7J2RlZmF1bHQnOiB7J0VO
R0lORSc6ICdkamFuZ28uZGIuYmFja2VuZHMuc3FsaXRlMycsICdBVVRPQ09NTUlUJzogVHJ1ZSwg
J0FUT01JQ19SRVFVRVNUUyc6IEZhbHNlLCAnTkFNRSc6ICd0b2FzdGVyLnNxbGl0ZScsICdDT05O
X01BWF9BR0UnOiAwLCAnVElNRV9aT05FJzogJ1VUQycsICdQT1JUJzogJzMzMDYnLCAnSE9TVCc6
ICcxMjcuMC4wLjEnLCAnVVNFUic6ICcnLCAnVEVTVCc6IHsnQ09MTEFUSU9OJzogTm9uZSwgJ0NI
QVJTRVQnOiBOb25lLCAnTkFNRSc6IE5vbmUsICdNSVJST1InOiBOb25lfSwgJ1BBU1NXT1JEJzog
dScqKioqKioqKioqKioqKioqKioqKicsICdPUFRJT05TJzogeyd0aW1lb3V0JzogMjB9fX0KRU1B
SUxfU1NMX0tFWUZJTEUgPSB1JyoqKioqKioqKioqKioqKioqKioqJwpGSUxFX1VQTE9BRF9ESVJF
Q1RPUllfUEVSTUlTU0lPTlMgPSBOb25lCkZJTEVfVVBMT0FEX1BFUk1JU1NJT05TID0gTm9uZQpG
SUxFX1VQTE9BRF9IQU5ETEVSUyA9IApERUZBVUxUX0NPTlRFTlRfVFlQRSA9ICd0ZXh0L2h0bWwn
ClRFU1RfUlVOTkVSID0gJ2RqYW5nby50ZXN0LnJ1bm5lci5EaXNjb3ZlclJ1bm5lcicKQVBQRU5E
X1NMQVNIID0gVHJ1ZQpGSVJTVF9EQVlfT0ZfV0VFSyA9IDAKREFUQUJBU0VfUk9VVEVSUyA9IFtd
CkRFRkFVTFRfVEFCTEVTUEFDRSA9ICcnCllFQVJfTU9OVEhfRk9STUFUID0gJ0YgWScKU1RBVElD
RklMRVNfU1RPUkFHRSA9ICdkamFuZ28uY29udHJpYi5zdGF0aWNmaWxlcy5zdG9yYWdlLlN0YXRp
Y0ZpbGVzU3RvcmFnZScKQ0FDSEVTID0geydkZWZhdWx0JzogeydMT0NBVElPTic6ICcvdG1wL3Rv
YXN0ZXJfY2FjaGVfMTAwMCcsICdUSU1FT1VUJzogMSwgJ0JBQ0tFTkQnOiAnZGphbmdvLmNvcmUu
Y2FjaGUuYmFja2VuZHMuZmlsZWJhc2VkLkZpbGVCYXNlZENhY2hlJ319ClNFU1NJT05fQ09PS0lF
X1BBVEggPSAnLycKU0VDVVJFX0NPTlRFTlRfVFlQRV9OT1NOSUZGID0gRmFsc2UKTUlERExFV0FS
RV9DTEFTU0VTID0gClVTRV9JMThOID0gVHJ1ZQpUSE9VU0FORF9TRVBBUkFUT1IgPSAnLCcKU0VD
UkVUX0tFWSA9IHUnKioqKioqKioqKioqKioqKioqKionClRPQVNURVJfQlJBTkNIID0gJ21hc3Rl
clxuJwpMQU5HVUFHRV9DT09LSUVfTkFNRSA9ICdkamFuZ29fbGFuZ3VhZ2UnCkRFRkFVTFRfSU5E
RVhfVEFCTEVTUEFDRSA9ICcnCkxPR0dJTkdfQ09ORklHID0gJ2xvZ2dpbmcuY29uZmlnLmRpY3RD
b25maWcnClRFTVBMQVRFX0xPQURFUlMgPSAKV1NHSV9BUFBMSUNBVElPTiA9ICd0b2FzdGVybWFp
bi53c2dpLmFwcGxpY2F0aW9uJwpURU1QTEFURV9ERUJVRyA9IFRydWUKWF9GUkFNRV9PUFRJT05T
ID0gJ1NBTUVPUklHSU4nCkFVVEhFTlRJQ0FUSU9OX0JBQ0tFTkRTID0gJ2RqYW5nby5jb250cmli
LmF1dGguYmFja2VuZHMuTW9kZWxCYWNrZW5kJwpGT1JDRV9TQ1JJUFRfTkFNRSA9IE5vbmUKVVNF
X1hfRk9SV0FSREVEX0hPU1QgPSBGYWxzZQpERUJVR19QQU5FTF9FTkFCTEVEID0gRmFsc2UKRU1B
SUxfVElNRU9VVCA9IE5vbmUKU0VDVVJFX1NTTF9IT1NUID0gTm9uZQpTSUdOSU5HX0JBQ0tFTkQg
PSAnZGphbmdvLmNvcmUuc2lnbmluZy5UaW1lc3RhbXBTaWduZXInClNFU1NJT05fQ09PS0lFX1NF
Q1VSRSA9IEZhbHNlCkNTUkZfQ09PS0lFX0RPTUFJTiA9IE5vbmUKRklMRV9DSEFSU0VUID0gJ3V0
Zi04JwpERUJVRyA9IFRydWUKTEFOR1VBR0VfQ09PS0lFX0RPTUFJTiA9IE5vbmUKREVGQVVMVF9G
SUxFX1NUT1JBR0UgPSAnZGphbmdvLmNvcmUuZmlsZXMuc3RvcmFnZS5GaWxlU3lzdGVtU3RvcmFn
ZScKSU5TVEFMTEVEX0FQUFMgPSAKTEFOR1VBR0VTID0gClVTRV9MMTBOID0gVHJ1ZQpTRUNVUkVf
SFNUU19JTkNMVURFX1NVQkRPTUFJTlMgPSBGYWxzZQpTVEFUSUNGSUxFU19ESVJTID0gClBSRVBF
TkRfV1dXID0gRmFsc2UKU0VDVVJFX1BST1hZX1NTTF9IRUFERVIgPSBOb25lCkxBTkdVQUdFX0NP
T0tJRV9BR0UgPSBOb25lClNFU1NJT05fQ09PS0lFX0hUVFBPTkxZID0gVHJ1ZQpERUJVR19QUk9Q
QUdBVEVfRVhDRVBUSU9OUyA9IEZhbHNlCkNTUkZfQ09PS0lFX0FHRSA9IDMxNDQ5NjAwCkROID0g
PGZ1bmN0aW9uIGRpcm5hbWUgYXQgMHg3ZjA1M2FlYWI1MDA+CkxPR0lOX1VSTCA9ICcvYWNjb3Vu
dHMvbG9naW4vJwpTRVNTSU9OX0VYUElSRV9BVF9CUk9XU0VSX0NMT1NFID0gRmFsc2UKU09VVEhf
VEVTVFNfTUlHUkFURSA9IEZhbHNlClRPQVNURVJfUkVWSVNJT04gPSAnMjBhMDEyMWI1NThiMzIx
NzkyMjBlMzk0YTY2Y2I5MGRjNmZmMzg3OVxuJwpUSU1FX0ZPUk1BVCA9ICdQJwpBVVRIX1VTRVJf
TU9ERUwgPSAnYXV0aC5Vc2VyJwpEQVRFX0lOUFVUX0ZPUk1BVFMgPSAKQ1NSRl9DT09LSUVfTkFN
RSA9ICdjc3JmdG9rZW4nCkVNQUlMX0hPU1RfUEFTU1dPUkQgPSB1JyoqKioqKioqKioqKioqKioq
KioqJwpQQVNTV09SRF9SRVNFVF9USU1FT1VUX0RBWVMgPSB1JyoqKioqKioqKioqKioqKioqKioq
JwpTRVNTSU9OX0ZJTEVfUEFUSCA9IE5vbmUKQ0FDSEVfTUlERExFV0FSRV9BTElBUyA9ICdkZWZh
dWx0JwpTRVNTSU9OX1NBVkVfRVZFUllfUkVRVUVTVCA9IEZhbHNlCk5VTUJFUl9HUk9VUElORyA9
IDAKU0VTU0lPTl9FTkdJTkUgPSAnZGphbmdvLmNvbnRyaWIuc2Vzc2lvbnMuYmFja2VuZHMuZGIn
CkNTUkZfRkFJTFVSRV9WSUVXID0gJ2RqYW5nby52aWV3cy5jc3JmLmNzcmZfZmFpbHVyZScKQ1NS
Rl9DT09LSUVfUEFUSCA9ICcvJwpMT0dJTl9SRURJUkVDVF9VUkwgPSAnL2FjY291bnRzL3Byb2Zp
bGUvJwpERUNJTUFMX1NFUEFSQVRPUiA9ICcuJwpJR05PUkFCTEVfNDA0X1VSTFMgPSAKTE9DQUxF
X1BBVEhTID0gClRFTVBMQVRFX1NUUklOR19JRl9JTlZBTElEID0gJyVzJwpMT0dPVVRfVVJMID0g
Jy9hY2NvdW50cy9sb2dvdXQvJwpFTUFJTF9VU0VfVExTID0gRmFsc2UKRklYVFVSRV9ESVJTID0g
CkVNQUlMX0hPU1QgPSAnbG9jYWxob3N0JwpEQVRFX0ZPUk1BVCA9ICdOIGosIFknCk1FRElBX1JP
T1QgPSAnJwpERUZBVUxUX0VYQ0VQVElPTl9SRVBPUlRFUl9GSUxURVIgPSAnZGphbmdvLnZpZXdz
LmRlYnVnLlNhZmVFeGNlcHRpb25SZXBvcnRlckZpbHRlcicKQURNSU5TID0gCkZPUk1BVF9NT0RV
TEVfUEFUSCA9IE5vbmUKREVGQVVMVF9GUk9NX0VNQUlMID0gJ3dlYm1hc3RlckBsb2NhbGhvc3Qn
Ck1FRElBX1VSTCA9ICcnCkRBVEVUSU1FX0ZPUk1BVCA9ICdOIGosIFksIFAnClRFTVBMQVRFX0RJ
UlMgPSAKU0lURV9JRCA9IDEKRElTQUxMT1dFRF9VU0VSX0FHRU5UUyA9IApBTExPV0VEX0lOQ0xV
REVfUk9PVFMgPSAKTE9HR0lORyA9IHsnbG9nZ2Vycyc6IHsndG9hc3Rlcic6IHsnaGFuZGxlcnMn
OiBbJ2NvbnNvbGUnXSwgJ2xldmVsJzogJ0RFQlVHJ30sICdkamFuZ28ucmVxdWVzdCc6IHsnaGFu
ZGxlcnMnOiBbJ2NvbnNvbGUnXSwgJ3Byb3BhZ2F0ZSc6IFRydWUsICdsZXZlbCc6ICdXQVJOJ319
LCAnZGlzYWJsZV9leGlzdGluZ19sb2dnZXJzJzogRmFsc2UsICdoYW5kbGVycyc6IHsnY29uc29s
ZSc6IHsnZm9ybWF0dGVyJzogJ2RhdGV0aW1lJywgJ2NsYXNzJzogJ2xvZ2dpbmcuU3RyZWFtSGFu
ZGxlcicsICdsZXZlbCc6ICdERUJVRyd9LCAnbWFpbF9hZG1pbnMnOiB7J2NsYXNzJzogJ2RqYW5n
by51dGlscy5sb2cuQWRtaW5FbWFpbEhhbmRsZXInLCAnZmlsdGVycyc6IFsncmVxdWlyZV9kZWJ1
Z19mYWxzZSddLCAnbGV2ZWwnOiAnRVJST1InfX0sICdmb3JtYXR0ZXJzJzogeydkYXRldGltZSc6
IHsnZm9ybWF0JzogJyUoYXNjdGltZSlzICUobGV2ZWxuYW1lKXMgJShtZXNzYWdlKXMnfX0sICd2
ZXJzaW9uJzogMSwgJ2ZpbHRlcnMnOiB7J3JlcXVpcmVfZGVidWdfZmFsc2UnOiB7JygpJzogJ2Rq
YW5nby51dGlscy5sb2cuUmVxdWlyZURlYnVnRmFsc2UnfX19ClNIT1JUX0RBVEVfRk9STUFUID0g
J20vZC9ZJwpURU1QTEFURVMgPSBbXQpTUUxfREVCVUcgPSBGYWxzZQpDQUNIRV9NSURETEVXQVJF
X0tFWV9QUkVGSVggPSB1JyoqKioqKioqKioqKioqKioqKioqJwpTRUNVUkVfU1NMX1JFRElSRUNU
ID0gRmFsc2UKVElNRV9aT05FID0gJ0V1cm9wZS9KZXJzZXknCkZJTEVfVVBMT0FEX01BWF9NRU1P
UllfU0laRSA9IDI2MjE0NDAKRlJFU0hfRU5BQkxFRCA9IEZhbHNlCkVNQUlMX0JBQ0tFTkQgPSAn
ZGphbmdvLmNvcmUubWFpbC5iYWNrZW5kcy5zbXRwLkVtYWlsQmFja2VuZCcKRU1BSUxfVVNFX1NT
TCA9IEZhbHNlClRFTVBMQVRFX0NPTlRFWFRfUFJPQ0VTU09SUyA9IApNSUdSQVRJT05fTU9EVUxF
UyA9IHt9ClNFU1NJT05fQ09PS0lFX0FHRSA9IDEyMDk2MDAKU0VUVElOR1NfTU9EVUxFID0gJ3Rv
YXN0ZXJtYWluLnNldHRpbmdzJwpVU0VfRVRBR1MgPSBGYWxzZQpTSVRFX1JPT1QgPSAnL2hvbWUv
YmVsZW4vcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyJwpMQU5HVUFHRVNfQklESSA9IApGSUxFX1VQ
TE9BRF9URU1QX0RJUiA9IE5vbmUKSU5URVJOQUxfSVBTID0gWycxMjcuMC4wLjEnLCAnMTkyLjE2
OC4yLjI4J10KU1RBVElDX1VSTCA9ICcvc3RhdGljLycKRU1BSUxfUE9SVCA9IDI1ClVTRV9UWiA9
IFRydWUKU0hPUlRfREFURVRJTUVfRk9STUFUID0gJ20vZC9ZIFAnClRFU1RfTk9OX1NFUklBTEla
RURfQVBQUyA9IFtdClBBU1NXT1JEX0hBU0hFUlMgPSB1JyoqKioqKioqKioqKioqKioqKioqJwpB
QlNPTFVURV9VUkxfT1ZFUlJJREVTID0ge30KTEFOR1VBR0VfQ09PS0lFX1BBVEggPSAnLycKQ0FD
SEVfTUlERExFV0FSRV9TRUNPTkRTID0gNjAwCkVNQUlMX1NTTF9DRVJURklMRSA9IE5vbmUKQ1NS
Rl9DT09LSUVfSFRUUE9OTFkgPSBGYWxzZQpEQVRFVElNRV9JTlBVVF9GT1JNQVRTID0gCkVNQUlM
X0hPU1RfVVNFUiA9ICcnCgpZb3UncmUgc2VlaW5nIHRoaXMgZXJyb3IgYmVjYXVzZSB5b3UgaGF2
ZSBERUJVRyA9IFRydWUgaW4geW91cgpEamFuZ28gc2V0dGluZ3MgZmlsZS4gQ2hhbmdlIHRoYXQg
dG8gRmFsc2UsIGFuZCBEamFuZ28gd2lsbApkaXNwbGF5IGEgc3RhbmRhcmQgcGFnZSBnZW5lcmF0
ZWQgYnkgdGhlIGhhbmRsZXIgZm9yIHRoaXMgc3RhdHVzIGNvZGUuCgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>