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

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>79673</bug_id>
          
          <creation_ts>2012-02-27 07:47:51 -0800</creation_ts>
          <short_desc>Parametrize run-with-jhbuild and update-webkitgtk-libs with platform --gtk/--efl</short_desc>
          <delta_ts>2012-03-15 07:59:22 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>79480</blocked>
    
    <blocked>79904</blocked>
    
    <blocked>80025</blocked>
    
    <blocked>80026</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Dominik Röttsches (drott)">d-r</reporter>
          <assigned_to name="Dominik Röttsches (drott)">d-r</assigned_to>
          <cc>abarth</cc>
    
    <cc>gustavo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>mrobinson</cc>
    
    <cc>ojan</cc>
    
    <cc>pnormand</cc>
    
    <cc>rakuco</cc>
    
    <cc>tmpsantos</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>565645</commentid>
    <comment_count>0</comment_count>
    <who name="Dominik Röttsches (drott)">d-r</who>
    <bug_when>2012-02-27 07:47:51 -0800</bug_when>
    <thetext>My proposal for solving bug 79480 is to reuse the scripts for jhbuild on the gtk side, and parametrize run-with-jhbuild as well as update-webkitgtk-libs with a --gtk/--efl platform parameter.

Your feedback is welcome whether that&apos;s a sensible idea.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>565729</commentid>
    <comment_count>1</comment_count>
      <attachid>129052</attachid>
    <who name="Dominik Röttsches (drott)">d-r</who>
    <bug_when>2012-02-27 09:23:02 -0800</bug_when>
    <thetext>Created attachment 129052
Proposal for patching jhbuild related scripts</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>565856</commentid>
    <comment_count>2</comment_count>
      <attachid>129052</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2012-02-27 11:36:11 -0800</bug_when>
    <thetext>Comment on attachment 129052
Proposal for patching jhbuild related scripts

Attachment 129052 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/11639162</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>566453</commentid>
    <comment_count>3</comment_count>
      <attachid>129203</attachid>
    <who name="Dominik Röttsches (drott)">d-r</who>
    <bug_when>2012-02-28 00:20:04 -0800</bug_when>
    <thetext>Created attachment 129203
Proposal for patching jhbuild related scripts, v2 fixing EWS error.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>566584</commentid>
    <comment_count>4</comment_count>
      <attachid>129203</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2012-02-28 04:41:55 -0800</bug_when>
    <thetext>Comment on attachment 129203
Proposal for patching jhbuild related scripts, v2 fixing EWS error.

View in context: https://bugs.webkit.org/attachment.cgi?id=129203&amp;action=review

&gt; Tools/BuildSlaveSupport/build.webkit.org-config/master.cfg:136
&gt; +    command = [&quot;perl&quot;, &quot;./Tools/Scripts/update-webkit-libs-jhbuild --gtk&quot;]

How about this: instead of removing update-webkitgtk-libs, keep it as a thin wrapper that calls update-webkitlibs-jhbuild with --gtk? The name of the script seems to be wrong here, btw, there&apos;s a dash between webkit and libs. By keeping the update-webkitgtk-libs script you can just remove this change, though.

&gt; Tools/Scripts/update-webkitlibs-jhbuild:56
&gt; +print &quot;Updating GTK+ port dependencies using jhbuild...\n&quot;;

You probably want to change GTK+ in here by a variable set in the platform check above?

&gt; Tools/Scripts/webkitdirs.pm:1825
&gt; -    unshift(@buildArgs, &quot;$sourceDir/Tools/gtk/run-with-jhbuild&quot;);
&gt; +    unshift(@buildArgs, &quot;--gtk&quot;);
&gt; +    unshift(@buildArgs, &quot;$sourceDir/Tools/jhbuild/run-with-jhbuild&quot;);

Same for this, I would prefer to keep gtk/run-with-jhbuild as a thin wrapper that calls the other one with the appropriate option.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>566587</commentid>
    <comment_count>5</comment_count>
    <who name="Raphael Kubo da Costa (:rakuco)">rakuco</who>
    <bug_when>2012-02-28 04:51:48 -0800</bug_when>
    <thetext>I wonder if using WebKitBuild/Dependencies for both gtk and efl can&apos;t cause problems when one builds both ports (ie. different checkout revisions etc).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>566591</commentid>
    <comment_count>6</comment_count>
    <who name="Thiago Marcos P. Santos">tmpsantos</who>
    <bug_when>2012-02-28 05:12:26 -0800</bug_when>
    <thetext>Agree, it should respect WEBKITOUTPUTDIR.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>566612</commentid>
    <comment_count>7</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-02-28 06:43:39 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; Agree, it should respect WEBKITOUTPUTDIR.

This will require two jhbuild trees for a Debug and Release build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>566632</commentid>
    <comment_count>8</comment_count>
      <attachid>129242</attachid>
    <who name="Dominik Röttsches (drott)">d-r</who>
    <bug_when>2012-02-28 07:09:47 -0800</bug_when>
    <thetext>Created attachment 129242
Proposal for patching jhbuild related scripts, v3, script-wrappers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>566634</commentid>
    <comment_count>9</comment_count>
    <who name="Dominik Röttsches (drott)">d-r</who>
    <bug_when>2012-02-28 07:11:49 -0800</bug_when>
    <thetext>(In reply to comment #4)

Thanks for your review!

&gt; (From update of attachment 129203 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=129203&amp;action=review
&gt; 
&gt; &gt; Tools/BuildSlaveSupport/build.webkit.org-config/master.cfg:136
&gt; &gt; +    command = [&quot;perl&quot;, &quot;./Tools/Scripts/update-webkit-libs-jhbuild --gtk&quot;]
&gt; 
&gt; How about this: instead of removing update-webkitgtk-libs, keep it as a thin wrapper that calls update-webkitlibs-jhbuild with --gtk? The name of the script seems to be wrong here, btw, there&apos;s a dash between webkit and libs. By keeping the update-webkitgtk-libs script you can just remove this change, though.

Sounds good to me, thought about this approach as well and wasn&apos;t sure which way would be preferred. Done in v3 of the patch.

&gt; 
&gt; &gt; Tools/Scripts/update-webkitlibs-jhbuild:56
&gt; &gt; +print &quot;Updating GTK+ port dependencies using jhbuild...\n&quot;;
&gt; 
&gt; You probably want to change GTK+ in here by a variable set in the platform check above?

Done.

&gt; 
&gt; &gt; Tools/Scripts/webkitdirs.pm:1825
&gt; &gt; -    unshift(@buildArgs, &quot;$sourceDir/Tools/gtk/run-with-jhbuild&quot;);
&gt; &gt; +    unshift(@buildArgs, &quot;--gtk&quot;);
&gt; &gt; +    unshift(@buildArgs, &quot;$sourceDir/Tools/jhbuild/run-with-jhbuild&quot;);
&gt; 
&gt; Same for this, I would prefer to keep gtk/run-with-jhbuild as a thin wrapper that calls the other one with the appropriate option.

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>566636</commentid>
    <comment_count>10</comment_count>
    <who name="Dominik Röttsches (drott)">d-r</who>
    <bug_when>2012-02-28 07:13:21 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; I wonder if using WebKitBuild/Dependencies for both gtk and efl can&apos;t cause problems when one builds both ports (ie. different checkout revisions etc).

I would say, we can handle this in a separate bug/patch added as a blocker to bug 79480.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>567221</commentid>
    <comment_count>11</comment_count>
      <attachid>129242</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-02-28 16:41:16 -0800</bug_when>
    <thetext>Comment on attachment 129242
Proposal for patching jhbuild related scripts, v3, script-wrappers.

View in context: https://bugs.webkit.org/attachment.cgi?id=129242&amp;action=review

&gt; Tools/Scripts/update-webkitgtk-libs:-2
&gt; -# Copyright (C) 2011 Igalia S.L.

AFAIK, we need to remain previous copyright.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>567227</commentid>
    <comment_count>12</comment_count>
    <who name="Raphael Kubo da Costa (:rakuco)">rakuco</who>
    <bug_when>2012-02-28 16:47:10 -0800</bug_when>
    <thetext>(In reply to comment #11)
&gt; (From update of attachment 129242 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=129242&amp;action=review
&gt; 
&gt; &gt; Tools/Scripts/update-webkitgtk-libs:-2
&gt; &gt; -# Copyright (C) 2011 Igalia S.L.
&gt; 
&gt; AFAIK, we need to remain previous copyright.

IANAL, but the copyright just got moved with the bulk of the file contents to the new one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>570312</commentid>
    <comment_count>13</comment_count>
      <attachid>129242</attachid>
    <who name="Raphael Kubo da Costa (:rakuco)">rakuco</who>
    <bug_when>2012-03-04 17:15:48 -0800</bug_when>
    <thetext>Comment on attachment 129242
Proposal for patching jhbuild related scripts, v3, script-wrappers.

View in context: https://bugs.webkit.org/attachment.cgi?id=129242&amp;action=review

Some additional minor comments while taking a look at the patch again. The style nitpicks come from WebKit following Python&apos;s PEP8, but apparently not actively checking for deviations.

&gt; Tools/jhbuild/jhbuild-wrapper:24
&gt; +import sys
&gt; +
&gt; +top_level_dir = None

Style nit: please separate imports and global variables with two blank lines.

&gt; Tools/jhbuild/jhbuild-wrapper:26
&gt; +def top_level_path(*args):

Isn&apos;t it possible to use common.top_level_path() here?

&gt; Tools/jhbuild/jhbuild-wrapper:40
&gt; +platform = None;
&gt; +
&gt; +def jhbuild_installed():

Style nit: please separate variables and functions with two empty lines.

&gt; Tools/jhbuild/jhbuild-wrapper:108
&gt; +        raise Exception(&apos;jhbuild configure failed with return code: %i&apos; % process.returncode)
&gt; +
&gt; +def determine_platform():

Style nit: please separate functions with two empty lines.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>578395</commentid>
    <comment_count>14</comment_count>
      <attachid>131848</attachid>
    <who name="Dominik Röttsches (drott)">d-r</who>
    <bug_when>2012-03-14 08:04:54 -0700</bug_when>
    <thetext>Created attachment 131848
Proposal for patching jhbuild related scripts, v4

Copyright kept, remaining style nits addressed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>578396</commentid>
    <comment_count>15</comment_count>
    <who name="Dominik Röttsches (drott)">d-r</who>
    <bug_when>2012-03-14 08:06:14 -0700</bug_when>
    <thetext>(In reply to comment #13)

&gt; &gt; Tools/jhbuild/jhbuild-wrapper:26
&gt; &gt; +def top_level_path(*args):
&gt; 
&gt; Isn&apos;t it possible to use common.top_level_path() here?

I am not copying common.py from Tools/gtk to Tools/jhbuild - it didn&apos;t seem worthwhile just for using top_level_path.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>579196</commentid>
    <comment_count>16</comment_count>
      <attachid>131848</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-03-15 01:30:18 -0700</bug_when>
    <thetext>Comment on attachment 131848
Proposal for patching jhbuild related scripts, v4

View in context: https://bugs.webkit.org/attachment.cgi?id=131848&amp;action=review

Thanks! This looks good overall but needs another iteration I think. See below:

&gt; Tools/Scripts/update-webkit-libs-jhbuild:41
&gt; +    if ($platformEfl) {
&gt; +        $platform = &quot;efl&quot;;
&gt; +        $prettyPlatform = &quot;EFL&quot;;
&gt; +    }

I&apos;m no Perl monkey (at all), but isn&apos;t there a nicer way to handle the option name with the prettyPlatform? Some kind of mapping/dictionary maybe?

&gt; Tools/jhbuild/jhbuild-wrapper:118
&gt; +    sys.exit(&quot;No platform specified for jhbuild-wrapper.&quot;)

Please raise a ValueError  here (or an Exception like it&apos;s done in the other functions above).

&gt; Tools/jhbuild/jhbuild-wrapper:133
&gt; +platform = determine_platform()

Wrap this in a try/except and sys.exit() if you catch a ValueError.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>579237</commentid>
    <comment_count>17</comment_count>
      <attachid>132008</attachid>
    <who name="Dominik Röttsches (drott)">d-r</who>
    <bug_when>2012-03-15 02:57:04 -0700</bug_when>
    <thetext>Created attachment 132008
Proposal for patching jhbuild related scripts, v5

Raising ValueError, using hash for pretty printing platform name. 
Additional cleanup on failure exit in update-webkit-libs-jhbuild.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>579239</commentid>
    <comment_count>18</comment_count>
      <attachid>132008</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-03-15 03:03:07 -0700</bug_when>
    <thetext>Comment on attachment 132008
Proposal for patching jhbuild related scripts, v5

Looks good, I&apos;ll cq+ after EWS turned green.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>579386</commentid>
    <comment_count>19</comment_count>
      <attachid>132008</attachid>
    <who name="Raphael Kubo da Costa (:rakuco)">rakuco</who>
    <bug_when>2012-03-15 07:59:12 -0700</bug_when>
    <thetext>Comment on attachment 132008
Proposal for patching jhbuild related scripts, v5

Clearing flags on attachment: 132008

Committed r110846: &lt;http://trac.webkit.org/changeset/110846&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>579387</commentid>
    <comment_count>20</comment_count>
    <who name="Raphael Kubo da Costa (:rakuco)">rakuco</who>
    <bug_when>2012-03-15 07:59:22 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>129052</attachid>
            <date>2012-02-27 09:23:02 -0800</date>
            <delta_ts>2012-02-28 00:19:54 -0800</delta_ts>
            <desc>Proposal for patching jhbuild related scripts</desc>
            <filename>bug-79673-20120227192306.patch</filename>
            <type>text/plain</type>
            <size>21392</size>
            <attacher name="Dominik Röttsches (drott)">d-r</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA4OTkzCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZTUzYWFlY2I1NWQxZWU1MTQ4NzY0OTljZGJiN2IwZTg3
ODY5ODJmNy4uNmE0MGU3MWM1YTYxNjU1ODNjZTk4ZWUzNzllMjZiZTgwODc0ZGY0YSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2
IEBACisyMDEyLTAyLTI3ICBEb21pbmlrIFLDtnR0c2NoZXMgIDxkb21pbmlrLnJvdHRzY2hlc0Bs
aW51eC5pbnRlbC5jb20+CisKKyAgICAgICAgUGFyYW1ldHJpemUgcnVuLXdpdGgtamhidWlsZCBh
bmQgdXBkYXRlLXdlYmtpdGd0ay1saWJzIHdpdGggcGxhdGZvcm0gLS1ndGsvLS1lZmwKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc5NjczCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBCdWlsZFNsYXZlU3Vw
cG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9tYXN0ZXIuY2ZnOgorICAgICAgICAoSW5zdGFs
bEd0a0RlcGVuZGVuY2llcyk6CisgICAgICAgICogU2NyaXB0cy9ydW4tZ3RrLXRlc3RzOgorICAg
ICAgICAoVGVzdFJ1bm5lci5fX2luaXRfXyk6CisgICAgICAgIChUZXN0UnVubmVyLl9sb29rdXBf
YXRzcGkyX2JpbmFyeSk6CisgICAgICAgIChUZXN0UnVubmVyLnJ1bi5fZXJyb3JfaGFuZGxlcik6
CisgICAgICAgIChUZXN0UnVubmVyKToKKyAgICAgICAgKFRlc3RSdW5uZXIucnVuKToKKyAgICAg
ICAgKiBTY3JpcHRzL3VwZGF0ZS13ZWJraXRsaWJzLWpoYnVpbGQ6IFJlbmFtZWQgZnJvbSBUb29s
cy9TY3JpcHRzL3VwZGF0ZS13ZWJraXRndGstbGlicy4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtp
dGRpcnMucG06CisgICAgICAgIChydW5BdXRvZ2VuRm9yQXV0b3Rvb2xzUHJvamVjdElmTmVjZXNz
YXJ5KToKKyAgICAgICAgKGJ1aWxkQXV0b3Rvb2xzUHJvamVjdCk6CisgICAgICAgICogU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9ndGsucHk6CisgICAgICAgIChHdGtEcml2ZXIu
Y21kX2xpbmUpOgorICAgICAgICAqIGpoYnVpbGQvcnVuLXdpdGgtamhidWlsZDogUmVuYW1lZCBm
cm9tIFRvb2xzL2d0ay9ydW4td2l0aC1qaGJ1aWxkLgorICAgICAgICAodG9wX2xldmVsX3BhdGgp
OgorICAgICAgICAoamhidWlsZF9pbnN0YWxsZWQpOgorICAgICAgICAoamhidWlsZF9jbG9uZWQp
OgorICAgICAgICAoamhidWlsZF9hdF9leHBlY3RlZF9yZXZpc2lvbik6CisgICAgICAgICh1cGRh
dGVfamhidWlsZCk6CisgICAgICAgIChjbG9uZV9qaGJ1aWxkKToKKyAgICAgICAgKGluc3RhbGxf
amhidWlsZCk6CisgICAgICAgICh1cGRhdGVfd2Via2l0X2xpYnNfamhidWlsZCk6CisgICAgICAg
IChkZXRlcm1pbmVfcGxhdGZvcm0pOgorICAgICAgICAoZW5zdXJlX2poYnVpbGQpOgorCiAyMDEy
LTAyLTI3ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAg
ICAgICBVbnJldmlld2VkLiBGaXggbWFrZSBkaXN0Y2hlY2suCmRpZmYgLS1naXQgYS9Ub29scy9C
dWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9tYXN0ZXIuY2ZnIGIvVG9v
bHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvbWFzdGVyLmNmZwpp
bmRleCAwNWUxNTQwYzZkZTU5NTQ3Yjk4OWZiZGExMGY0OGQ1ZjA3YTYyNTJmLi41M2Y4ODllZjE3
ZmY2NDgzOWFkMDJjZThkMWIxMTgxMTIzMGRhYTg3IDEwMDY0NAotLS0gYS9Ub29scy9CdWlsZFNs
YXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9tYXN0ZXIuY2ZnCisrKyBiL1Rvb2xz
L0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL21hc3Rlci5jZmcKQEAg
LTEzMyw3ICsxMzMsNyBAQCBjbGFzcyBJbnN0YWxsR3RrRGVwZW5kZW5jaWVzKHNoZWxsLlNoZWxs
Q29tbWFuZCk6CiAgICAgbmFtZSA9ICJqaGJ1aWxkIgogICAgIGRlc2NyaXB0aW9uID0gWyJ1cGRh
dGluZyBndGsgZGVwZW5kZW5jaWVzIl0KICAgICBkZXNjcmlwdGlvbkRvbmUgPSBbInVwZGF0ZWQg
Z3RrIGRlcGVuZGVuY2llcyJdCi0gICAgY29tbWFuZCA9IFsicGVybCIsICIuL1Rvb2xzL1Njcmlw
dHMvdXBkYXRlLXdlYmtpdGd0ay1saWJzIl0KKyAgICBjb21tYW5kID0gWyJwZXJsIiwgIi4vVG9v
bHMvU2NyaXB0cy91cGRhdGUtd2Via2l0LWxpYnMtamhidWlsZCAtLWd0ayJdCiAgICAgaGFsdE9u
RmFpbHVyZSA9IFRydWUKIAogY2xhc3MgSW5zdGFsbENocm9taXVtRGVwZW5kZW5jaWVzKHNoZWxs
LlNoZWxsQ29tbWFuZCk6CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3J1bi1ndGstdGVzdHMg
Yi9Ub29scy9TY3JpcHRzL3J1bi1ndGstdGVzdHMKaW5kZXggMWZlY2RmMDYyNmEzYWE3NzA1N2Ji
MWMxYjk2NGM3OTI1ZmQzNTQ3My4uYzdjMTc4ZGI5NDdiNmE4NmM1ZTY4ZTg3NmY1MDdhMWNhZmYz
OTU2ZiAxMDA3NTUKLS0tIGEvVG9vbHMvU2NyaXB0cy9ydW4tZ3RrLXRlc3RzCisrKyBiL1Rvb2xz
L1NjcmlwdHMvcnVuLWd0ay10ZXN0cwpAQCAtNDksNiArNDksNyBAQCBjbGFzcyBUZXN0UnVubmVy
OgogICAgICAgICAgICAgYnVpbGRfZGlyZWN0b3J5ID0gb3MucGF0aC5qb2luKHRvcF9sZXZlbCwg
J1dlYktpdEJ1aWxkJywgJ0RlYnVnJykKIAogICAgICAgICBzZWxmLl9ndGtfdG9vbHNfZGlyZWN0
b3J5ID0gb3MucGF0aC5qb2luKHRvcF9sZXZlbCwgIlRvb2xzIiwgImd0ayIpCisgICAgICAgIHNl
bGYuX2poYnVpbGRfdG9vbHNfZGlyZWN0b3J5ID0gb3MucGF0aC5qb2luKHRvcF9sZXZlbCwgIlRv
b2xzIiwgImpoYnVpbGQiKQogICAgICAgICBzZWxmLl9wcm9ncmFtc19wYXRoID0gb3MucGF0aC5q
b2luKGJ1aWxkX2RpcmVjdG9yeSwgIlByb2dyYW1zIikKICAgICAgICAgc2VsZi5fdGVzdHMgPSBb
XQogICAgICAgICBmb3IgdGVzdF9kaXIgaW4gc2VsZi5URVNUX0RJUlM6CkBAIC02OSw3ICs3MCw3
IEBAIGNsYXNzIFRlc3RSdW5uZXI6CiAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3Rlc3RzLmFw
cGVuZCh0ZXN0X3BhdGgpCiAKICAgICBkZWYgX2xvb2t1cF9hdHNwaTJfYmluYXJ5KHNlbGYsIGpo
YnVpbGRfcGF0aCwgZmlsZW5hbWUpOgotICAgICAgICBleGVjX3ByZWZpeCA9IHNlbGYuX2V4ZWN1
dGl2ZS5ydW5fY29tbWFuZChbamhidWlsZF9wYXRoICwncGtnLWNvbmZpZycsICctLXZhcmlhYmxl
PWV4ZWNfcHJlZml4JywgJ2F0c3BpLTInXSkucnN0cmlwKCdcclxuJykKKyAgICAgICAgZXhlY19w
cmVmaXggPSBzZWxmLl9leGVjdXRpdmUucnVuX2NvbW1hbmQoW2poYnVpbGRfcGF0aCAsJy0tZ3Rr
JywgJ3BrZy1jb25maWcnLCAnLS12YXJpYWJsZT1leGVjX3ByZWZpeCcsICdhdHNwaS0yJ10pLnJz
dHJpcCgnXHJcbicpCiAgICAgICAgIHBhdGhzX3RvX2NoZWNrID0gWyAnbGliZXhlYycsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAnbGliL2F0LXNwaTItY29yZScsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAnbGliMzIvYXQtc3BpMi1jb3JlJwpAQCAtOTQsNyArOTUsNyBAQCBjbGFz
cyBUZXN0UnVubmVyOgogICAgICAgICBkZWYgX2Vycm9yX2hhbmRsZXIoZXJyb3IpOgogICAgICAg
ICAgICAgZXhpdF9zdGF0dXNbMF0gPSBlcnJvci5leGl0X2NvZGUKIAotICAgICAgICBqaGJ1aWxk
X3BhdGggPSBvcy5wYXRoLmpvaW4oc2VsZi5fZ3RrX3Rvb2xzX2RpcmVjdG9yeSwgInJ1bi13aXRo
LWpoYnVpbGQiKQorICAgICAgICBqaGJ1aWxkX3BhdGggPSBvcy5wYXRoLmpvaW4oc2VsZi5famhi
dWlsZF90b29sc19kaXJlY3RvcnksICJydW4td2l0aC1qaGJ1aWxkIikKIAogICAgICAgICAjIE1h
a2Ugc3VyZSB0aGUgYWNjZXNzaWJpbGl0eSBidXMgaXMgbGF1bmNoZWQuCiAgICAgICAgIGExMXlf
YnVzX2xhdW5jaGVkID0gRmFsc2UKQEAgLTExOSw3ICsxMjAsNyBAQCBjbGFzcyBUZXN0UnVubmVy
OgogICAgICAgICAgICAgICAgIHN5cy5zdGRlcnIuZmx1c2goKQogCiAgICAgICAgIGZvciB0ZXN0
IGluIHNlbGYuX3Rlc3RzOgotICAgICAgICAgICAgb3V0ID0gc2VsZi5fZXhlY3V0aXZlLnJ1bl9j
b21tYW5kKFtqaGJ1aWxkX3BhdGggLCdndGVzdGVyJywgdGVzdF0sIGVudj10ZXN0X2VudiwKKyAg
ICAgICAgICAgIG91dCA9IHNlbGYuX2V4ZWN1dGl2ZS5ydW5fY29tbWFuZChbamhidWlsZF9wYXRo
LCAnLS1ndGsnLCAnZ3Rlc3RlcicsIHRlc3RdLCBlbnY9dGVzdF9lbnYsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JfaGFuZGxlcj1fZXJyb3JfaGFu
ZGxlcikKICAgICAgICAgICAgIHN5cy5zdGRvdXQud3JpdGUob3V0KQogICAgICAgICAgICAgc3lz
LnN0ZG91dC5mbHVzaCgpCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3VwZGF0ZS13ZWJraXRn
dGstbGlicyBiL1Rvb2xzL1NjcmlwdHMvdXBkYXRlLXdlYmtpdGd0ay1saWJzCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDc1NQppbmRleCA4MDMzYzYyZWJmMjI5Yzc1YWJiNGI1MjFhNjdiMzE2Y2VjNDRj
Nzk1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Rvb2xz
L1NjcmlwdHMvdXBkYXRlLXdlYmtpdGd0ay1saWJzCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAs
MCBAQAotIyEvdXNyL2Jpbi9wZXJsIC13Ci0jIENvcHlyaWdodCAoQykgMjAxMSBJZ2FsaWEgUy5M
LgotIwotIyBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1
dGUgaXQgYW5kL29yCi0jIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNz
ZXIgR2VuZXJhbCBQdWJsaWMKLSMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0jIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3Ig
KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSMKLSMgVGhpcyBsaWJyYXJ5IGlz
IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0jIGJ1dCBX
SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m
Ci0jIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g
IFNlZSB0aGUgR05VCi0jIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl
dGFpbHMuCi0jCi0jIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBM
ZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSMgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsg
aWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotIyBGb3VuZGF0aW9uLCBJbmMuLCA1
MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBV
U0EKLQotdXNlIEZpbmRCaW47Ci11c2UgbGliICRGaW5kQmluOjpCaW47Ci11c2Ugd2Via2l0ZGly
czsKLQotZGVsZXRlICRFTlZ7QVJfRkxBR1N9IGlmIGV4aXN0cyAkRU5We0FSX0ZMQUdTfTsKLQot
Y2hkaXIocmVsYXRpdmVTY3JpcHRzRGlyKCkgLiAiLy4uL2d0ayIpIG9yIGRpZSAkITsKLQotbXkg
QGVuc3VyZUpoYnVpbGRBcmdzID0gKCIuL3J1bi13aXRoLWpoYnVpbGQiLCAiZWNobyIsICJFbnN1
cmVkIGpoYnVpbGQgc2V0dXAuIik7Ci1pZiAoc3lzdGVtKEBlbnN1cmVKaGJ1aWxkQXJncykgIT0g
MCkgewotICAgIGRpZSAiRmFpbGVkIHRvIGVuc3VyZSBqaGJ1aWxkIGluc3RhbGxlZC5cbiI7Ci19
Ci0KLXByaW50ICJVcGRhdGluZyBHVEsrIHBvcnQgZGVwZW5kZW5jaWVzIHVzaW5nIGpoYnVpbGQu
Li5cbiI7Ci1teSBAamhidWlsZEFyZ3MgPSAoIi4uLy4uL1dlYktpdEJ1aWxkL0RlcGVuZGVuY2ll
cy9Sb290L2Jpbi9qaGJ1aWxkIiwgIi0tbm8taW50ZXJhY3QiLCAiLWYiLCAiamhidWlsZHJjIik7
Ci1wdXNoKEBqaGJ1aWxkQXJncywgQEFSR1ZbMS4uLTFdKTsKLWlmIChzeXN0ZW0oQGpoYnVpbGRB
cmdzKSAhPSAwKSB7Ci0gICAgZGllICJSdW5uaW5nIGpoYnVpbGQgZmFpbGVkLlxuIgotfQpkaWZm
IC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy91cGRhdGUtd2Via2l0bGlicy1qaGJ1aWxkIGIvVG9vbHMv
U2NyaXB0cy91cGRhdGUtd2Via2l0bGlicy1qaGJ1aWxkCm5ldyBmaWxlIG1vZGUgMTAwNzU1Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4ZjI0YThkYWI0
ZTRlNjk3Zjg5NjI2MDc1MGI3M2MyNDA4MGQxNGYKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9T
Y3JpcHRzL3VwZGF0ZS13ZWJraXRsaWJzLWpoYnVpbGQKQEAgLTAsMCArMSw2MSBAQAorIyEvdXNy
L2Jpbi9wZXJsIC13CisjIENvcHlyaWdodCAoQykgMjAxMSBJZ2FsaWEgUy5MLgorIyBDb3B5cmln
aHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRpb24KKyMKKyMgVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorIyBtb2RpZnkgaXQgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisjIExpY2Vuc2Ug
YXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorIyB2
ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZl
cnNpb24uCisjCisjIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0
IGl0IHdpbGwgYmUgdXNlZnVsLAorIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg
ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorIyBMZXNzZXIgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorIworIyBZb3Ugc2hvdWxkIGhhdmUg
cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisjIExpY2Vu
c2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29m
dHdhcmUKKyMgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9v
ciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCisKK3VzZSBGaW5kQmluOwordXNlIGxpYiAk
RmluZEJpbjo6QmluOwordXNlIHdlYmtpdGRpcnM7Cit1c2UgR2V0b3B0OjpMb25nOworCitteSAk
cGxhdGZvcm1FZmwgPSAwOworbXkgJHBsYXRmb3JtR3RrID0gMDsKKworbXkgJGdldE9wdGlvbnNS
ZXN1bHQgPSBHZXRPcHRpb25zKAorICAgICdlZmwnID0+IFwkcGxhdGZvcm1FZmwsCisgICAgJ2d0
aycgPT4gXCRwbGF0Zm9ybUd0aworICAgICk7CisKK215ICRwbGF0Zm9ybSA9ICIiOworaWYgKCEk
Z2V0T3B0aW9uc1Jlc3VsdCkgeworICAgIHByaW50IFNUREVSUiAiTm8gcGxhdGZvcm0gc3BlY2lm
aWVkIGZvciAiIC4gYmFzZW5hbWUoJDApIC4iLiBVc2UgLS1ndGsgb3IgLS1lZmwuIjsKKyAgICBy
ZXR1cm4gMTsKK30gZWxzZSB7CisgICAgaWYgKCRwbGF0Zm9ybUVmbCkgeworICAgICAgICAkcGxh
dGZvcm0gPSAiZWZsIjsKKyAgICB9CisgICAgaWYgKCRwbGF0Zm9ybUd0aykgeworICAgICAgICAk
cGxhdGZvcm0gPSAiZ3RrIjsKKyAgICB9Cit9CisKK2RlbGV0ZSAkRU5We0FSX0ZMQUdTfSBpZiBl
eGlzdHMgJEVOVntBUl9GTEFHU307CisKK2NoZGlyKHJlbGF0aXZlU2NyaXB0c0RpcigpIC4gIi8u
Li9qaGJ1aWxkIikgb3IgZGllICQhOworCitteSBAZW5zdXJlSmhidWlsZEFyZ3MgPSAoIi4vcnVu
LXdpdGgtamhidWlsZCIsICItLSIuJHBsYXRmb3JtLCAiZWNobyIsICJFbnN1cmVkIGpoYnVpbGQg
c2V0dXAuIik7CitpZiAoc3lzdGVtKEBlbnN1cmVKaGJ1aWxkQXJncykgIT0gMCkgeworICAgIGRp
ZSAiRmFpbGVkIHRvIGVuc3VyZSBqaGJ1aWxkIGluc3RhbGxlZC5cbiI7Cit9CisKK2NoZGlyKHJl
bGF0aXZlU2NyaXB0c0RpcigpIC4gIi8uLi8iLiRwbGF0Zm9ybSkgb3IgZGllICQhOworCitwcmlu
dCAiVXBkYXRpbmcgR1RLKyBwb3J0IGRlcGVuZGVuY2llcyB1c2luZyBqaGJ1aWxkLi4uXG4iOwor
bXkgQGpoYnVpbGRBcmdzID0gKCIuLi8uLi9XZWJLaXRCdWlsZC9EZXBlbmRlbmNpZXMvUm9vdC9i
aW4vamhidWlsZCIsICItLW5vLWludGVyYWN0IiwgIi1mIiwgImpoYnVpbGRyYyIpOworcHVzaChA
amhidWlsZEFyZ3MsIEBBUkdWWzIuLi0xXSk7CitpZiAoc3lzdGVtKEBqaGJ1aWxkQXJncykgIT0g
MCkgeworICAgIGRpZSAiUnVubmluZyBqaGJ1aWxkIGZhaWxlZC5cbiIKK30KZGlmZiAtLWdpdCBh
L1Rvb2xzL1NjcmlwdHMvd2Via2l0ZGlycy5wbSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0ZGlycy5w
bQppbmRleCAwYjJhZGRmYzVmMTQwYjJiOTAzOWQyMjNiNzIwNTQ4ZmM1NGY1MmM1Li5mZjZhNGZh
MDFhYmI0MTMyNjhhM2Y0YWJiNWMwYzBjZjEwZDYzMWJlIDEwMDc1NQotLS0gYS9Ub29scy9TY3Jp
cHRzL3dlYmtpdGRpcnMucG0KKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRkaXJzLnBtCkBAIC0x
ODIxLDcgKzE4MjEsOCBAQCBzdWIgcnVuQXV0b2dlbkZvckF1dG90b29sc1Byb2plY3RJZk5lY2Vz
c2FyeSgkQCkKIAogICAgICMgUHJlZml4IHRoZSBjb21tYW5kIHdpdGggamhidWlsZCBydW4uCiAg
ICAgdW5zaGlmdChAYnVpbGRBcmdzLCAiJHJlbFNvdXJjZURpci9hdXRvZ2VuLnNoIik7Ci0gICAg
dW5zaGlmdChAYnVpbGRBcmdzLCAiJHNvdXJjZURpci9Ub29scy9ndGsvcnVuLXdpdGgtamhidWls
ZCIpOworICAgIHVuc2hpZnQoQGJ1aWxkQXJncywgIi0tZ3RrIik7CisgICAgdW5zaGlmdChAYnVp
bGRBcmdzLCAiJHNvdXJjZURpci9Ub29scy9qaGJ1aWxkL3J1bi13aXRoLWpoYnVpbGQiKTsKICAg
ICBpZiAoc3lzdGVtKEBidWlsZEFyZ3MpIG5lIDApIHsKICAgICAgICAgZGllICJDYWxsaW5nIGF1
dG9nZW4uc2ggZmFpbGVkIVxuIjsKICAgICB9CkBAIC0xODk5LDcgKzE5MDAsNyBAQCBzdWIgYnVp
bGRBdXRvdG9vbHNQcm9qZWN0KCRAKQogCiAgICAgIyBXZSBtaWdodCBuZWVkIHRvIHVwZGF0ZSBq
aGJ1aWxkIGRlcGVuZGVuY2llcy4KICAgICBpZiAoY2hlY2tGb3JBcmd1bWVudEFuZFJlbW92ZUZy
b21BcnJheVJlZigiLS11cGRhdGUtZ3RrIiwgXEBidWlsZFBhcmFtcykpIHsKLSAgICAgICAgc3lz
dGVtKCJwZXJsIiwgIiRzb3VyY2VEaXIvVG9vbHMvU2NyaXB0cy91cGRhdGUtd2Via2l0Z3RrLWxp
YnMiKSA9PSAwIG9yIGRpZSAkITsKKyAgICAgICAgc3lzdGVtKCJwZXJsIiwgIiRzb3VyY2VEaXIv
VG9vbHMvU2NyaXB0cy91cGRhdGUtd2Via2l0bGlicy1qaGJ1aWxkIC0tZ3RrIikgPT0gMCBvciBk
aWUgJCE7CiAgICAgfQogCiAgICAgbXkgQGJ1aWxkQXJncyA9ICgpOwpAQCAtMTk0MiwxNiArMTk0
MywxNyBAQCBzdWIgYnVpbGRBdXRvdG9vbHNQcm9qZWN0KCRAKQogICAgICMgZGVwZW5kZW5jaWVz
IGFuZCByZS1ydW4gYXV0b2dlbi5zaCB3aGVuIGJ1aWxkIGZpbGVzIGNoYW5nZS4KICAgICBydW5B
dXRvZ2VuRm9yQXV0b3Rvb2xzUHJvamVjdElmTmVjZXNzYXJ5KCRkaXIsICRwcmVmaXgsICRzb3Vy
Y2VEaXIsICRwcm9qZWN0LCBAYnVpbGRBcmdzKTsKIAotICAgIG15ICRndGtTY3JpcHRzUGF0aCA9
ICIkc291cmNlRGlyL1Rvb2xzL2d0ayI7Ci0gICAgbXkgJHJ1bldpdGhKaGJ1aWxkID0gIiRndGtT
Y3JpcHRzUGF0aC9ydW4td2l0aC1qaGJ1aWxkIjsKLSAgICBpZiAoc3lzdGVtKCIkcnVuV2l0aEpo
YnVpbGQgJG1ha2UgJG1ha2VBcmdzIikgbmUgMCkgeworICAgIG15ICRqaGJ1aWxkUGF0aCA9ICIk
c291cmNlRGlyL1Rvb2xzL2poYnVpbGQiOworICAgIG15ICRydW5XaXRoSmhidWlsZCA9ICIkamhi
dWlsZFBhdGgvcnVuLXdpdGgtamhidWlsZCI7CisgICAgaWYgKHN5c3RlbSgiJHJ1bldpdGhKaGJ1
aWxkIC0tZ3RrICRtYWtlICRtYWtlQXJncyIpIG5lIDApIHsKICAgICAgICAgZGllICJcbkZhaWxl
ZCB0byBidWlsZCBXZWJLaXQgdXNpbmcgJyRtYWtlJyFcbiI7CiAgICAgfQogCiAgICAgY2hkaXIg
Ii4uIiBvciBkaWU7CisgICAgbXkgJGd0a1NjcmlwdHNQYXRoID0gIiRzb3VyY2VEaXIvVG9vbHMv
Z3RrIjsKIAogICAgIGlmICgkcHJvamVjdCBlcSAnV2ViS2l0JyAmJiAhaXNDcm9zc0NvbXBpbGF0
aW9uKCkpIHsKLSAgICAgICAgbXkgQGRvY0dlbmVyYXRpb25PcHRpb25zID0gKCRydW5XaXRoSmhi
dWlsZCwgIiRndGtTY3JpcHRzUGF0aC9nZW5lcmF0ZS1ndGtkb2MiLCAiLS1za2lwLWh0bWwiKTsK
KyAgICAgICAgbXkgQGRvY0dlbmVyYXRpb25PcHRpb25zID0gKCRydW5XaXRoSmhidWlsZCwgIi0t
Z3RrIiwgIiRndGtTY3JpcHRzUGF0aC9nZW5lcmF0ZS1ndGtkb2MiLCAiLS1za2lwLWh0bWwiKTsK
ICAgICAgICAgaWYgKCRkZWJ1ZykgewogICAgICAgICAgICAgcHVzaChAZG9jR2VuZXJhdGlvbk9w
dGlvbnMsICItLWRlYnVnIik7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZ3RrLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvcG9ydC9ndGsucHkKaW5kZXggYzllZTFjYmZlNmQzNWE2OWVlNTU3Y2I5
ODg4Mjg0ZGFhNGYyMDc2ZC4uNjJhZmI3NzA1MjcwNjU4MDQxOGI5OWU0YTE3YWRiYTk4NzBkNjE4
OSAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9n
dGsucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9ndGsu
cHkKQEAgLTY1LDggKzY1LDggQEAgY2xhc3MgR3RrRHJpdmVyKFdlYktpdERyaXZlcik6CiAgICAg
ICAgICAgICBzZWxmLl94dmZiX3Byb2Nlc3MgPSBOb25lCiAKICAgICBkZWYgY21kX2xpbmUoc2Vs
Zik6Ci0gICAgICAgIHdyYXBwZXJfcGF0aCA9IHNlbGYuX3BvcnQucGF0aF9mcm9tX3dlYmtpdF9i
YXNlKCJUb29scyIsICJndGsiLCAicnVuLXdpdGgtamhidWlsZCIpCi0gICAgICAgIHJldHVybiBb
d3JhcHBlcl9wYXRoXSArIFdlYktpdERyaXZlci5jbWRfbGluZShzZWxmKQorICAgICAgICB3cmFw
cGVyX3BhdGggPSBzZWxmLl9wb3J0LnBhdGhfZnJvbV93ZWJraXRfYmFzZSgiVG9vbHMiLCAiamhi
dWlsZCIsICJydW4td2l0aC1qaGJ1aWxkIikKKyAgICAgICAgcmV0dXJuIFt3cmFwcGVyX3BhdGhd
ICsgWyItLWd0ayJdICsgV2ViS2l0RHJpdmVyLmNtZF9saW5lKHNlbGYpCiAKIAogY2xhc3MgR3Rr
UG9ydChXZWJLaXRQb3J0KToKZGlmZiAtLWdpdCBhL1Rvb2xzL2d0ay9ydW4td2l0aC1qaGJ1aWxk
IGIvVG9vbHMvZ3RrL3J1bi13aXRoLWpoYnVpbGQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1Cmlu
ZGV4IDVmODhlZDA1MzFiNmUwMTQ1YzMyZjYzNzRkNGIxOTdjNWU0M2I1ZTEuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvVG9vbHMvZ3RrL3J1bi13aXRoLWpo
YnVpbGQKKysrIC9kZXYvbnVsbApAQCAtMSwxMjIgKzAsMCBAQAotIyEvdXNyL2Jpbi9lbnYgcHl0
aG9uCi0jIENvcHlyaWdodCAoQykgMjAxMSBJZ2FsaWEgUy5MLgotIyBDb3B5cmlnaHQgKEMpIDIw
MTIgR3VzdGF2byBOb3JvbmhhIFNpbHZhIDxnbnNAZ25vbWUub3JnPgotIwotIyBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0jIG1v
ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMK
LSMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg
ZWl0aGVyCi0jIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBh
bnkgbGF0ZXIgdmVyc2lvbi4KLSMKLSMgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRo
ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0jIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U
WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0jIE1FUkNIQU5UQUJJTElU
WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0jIExl
c3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0jCi0jIFlvdSBz
aG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJs
aWMKLSMgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0
aGUgRnJlZSBTb2Z0d2FyZQotIyBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQs
IEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EKLQotaW1wb3J0IGNvbW1v
bgotaW1wb3J0IG9zCi1pbXBvcnQgc3VicHJvY2VzcwotaW1wb3J0IHN5cwotCi0KLWpoYnVpbGRf
cmV2aXNpb24gPSAnMWVlZGM0MjNmNzVjNjA1MjI0YjQzMDU3OWU0YzMwMzI5MjE5OTUwNycKLQot
aW5zdGFsbGF0aW9uX3ByZWZpeCA9IG9zLnBhdGguYWJzcGF0aChjb21tb24udG9wX2xldmVsX3Bh
dGgoJ1dlYktpdEJ1aWxkJywgJ0RlcGVuZGVuY2llcycsICdSb290JykpCi1zb3VyY2VfcGF0aCA9
IG9zLnBhdGguYWJzcGF0aChjb21tb24udG9wX2xldmVsX3BhdGgoJ1dlYktpdEJ1aWxkJywgJ0Rl
cGVuZGVuY2llcycsICdTb3VyY2UnKSkKLWpoYnVpbGRfc291cmNlX3BhdGggPSBvcy5wYXRoLmpv
aW4oc291cmNlX3BhdGgsICdqaGJ1aWxkJykKLWpoYnVpbGRfcGF0aCA9IGNvbW1vbi50b3BfbGV2
ZWxfcGF0aCgnV2ViS2l0QnVpbGQnLCAnRGVwZW5kZW5jaWVzJywgJ1Jvb3QnLCAnYmluJywgJ2po
YnVpbGQnKQotCi0KLWRlZiBqaGJ1aWxkX2luc3RhbGxlZCgpOgotICAgIHJldHVybiBvcy5wYXRo
LmV4aXN0cyhqaGJ1aWxkX3BhdGgpCi0KLQotZGVmIGpoYnVpbGRfY2xvbmVkKCk6Ci0gICAgcmV0
dXJuIG9zLnBhdGguZXhpc3RzKGpoYnVpbGRfc291cmNlX3BhdGgpCi0KLQotZGVmIGpoYnVpbGRf
YXRfZXhwZWN0ZWRfcmV2aXNpb24oKToKLSAgICBwcm9jZXNzID0gc3VicHJvY2Vzcy5Qb3Blbihb
J2dpdCcsICdyZXYtbGlzdCcsICdIRUFEXi4uJ10sIGN3ZD1qaGJ1aWxkX3NvdXJjZV9wYXRoLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsIHN0
ZGVycj1zdWJwcm9jZXNzLlBJUEUpCi0gICAgb3V0cHV0LCBlcnIgPSBwcm9jZXNzLmNvbW11bmlj
YXRlKCkKLSAgICBpZiBwcm9jZXNzLnJldHVybmNvZGUgIT0gMDoKLSAgICAgICAgcmFpc2UgRXhj
ZXB0aW9uKCdmYWlsZWQgdG8gZmluZCBqaGJ1aWxkIHJldmlzaW9uOiAlcycgJSBlcnIpCi0KLSAg
ICByZXR1cm4gb3V0cHV0LnN0cmlwKCkgPT0gamhidWlsZF9yZXZpc2lvbgotCi0KLWRlZiB1cGRh
dGVfamhidWlsZCgpOgotICAgIHByb2Nlc3MgPSBzdWJwcm9jZXNzLlBvcGVuKFsnZ2l0JywgJ3Jl
bW90ZScsICd1cGRhdGUnLCAnb3JpZ2luJ10sIGN3ZD1qaGJ1aWxkX3NvdXJjZV9wYXRoKQotICAg
IHByb2Nlc3Mud2FpdCgpCi0gICAgaWYgcHJvY2Vzcy5yZXR1cm5jb2RlICE9IDA6Ci0gICAgICAg
IHJhaXNlIEV4Y2VwdGlvbignamhidWlsZCByZW1vdGUgdXBkYXRlIG9yaWdpbiBmYWlsZWQgd2l0
aCByZXR1cm4gY29kZTogJWknICUgcHJvY2Vzcy5yZXR1cm5jb2RlKQotCi0gICAgcHJvY2VzcyA9
IHN1YnByb2Nlc3MuUG9wZW4oWydnaXQnLCAnY2hlY2tvdXQnLCAnJXMnICUgamhidWlsZF9yZXZp
c2lvbl0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3dkPWpoYnVpbGRfc291cmNl
X3BhdGgpCi0gICAgcHJvY2Vzcy53YWl0KCkKLSAgICBpZiBwcm9jZXNzLnJldHVybmNvZGUgIT0g
MDoKLSAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCdmYWlsZWQgdG8gY2hlY2tvdXQgdHJlZWlzaCAl
czogJWknICUgKGpoYnVpbGRfcmV2aXNpb24sIHByb2Nlc3MucmV0dXJuY29kZSkpCi0KLQotZGVm
IGNsb25lX2poYnVpbGQoKToKLSAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoc291cmNlX3BhdGgp
OgotICAgICAgICBvcy5tYWtlZGlycyhzb3VyY2VfcGF0aCkKLSAgICBpZiBub3Qgb3MucGF0aC5l
eGlzdHMoaW5zdGFsbGF0aW9uX3ByZWZpeCk6Ci0gICAgICAgIG9zLm1ha2VkaXJzKGluc3RhbGxh
dGlvbl9wcmVmaXgpCi0KLSAgICBwcm9jZXNzID0gc3VicHJvY2Vzcy5Qb3BlbihbJ2dpdCcsICdj
bG9uZScsICdnaXQ6Ly9naXQuZ25vbWUub3JnL2poYnVpbGQnXSwgY3dkPXNvdXJjZV9wYXRoKQot
ICAgIHByb2Nlc3Mud2FpdCgpCi0gICAgaWYgcHJvY2Vzcy5yZXR1cm5jb2RlICE9IDA6Ci0gICAg
ICAgIHJhaXNlIEV4Y2VwdGlvbignamhidWlsZCBnaXQgY2xvbmUgZmFpbGVkIHdpdGggcmV0dXJu
IGNvZGU6ICVpJyAlIHByb2Nlc3MucmV0dXJuY29kZSkKLQotCi1kZWYgaW5zdGFsbF9qaGJ1aWxk
KCk6Ci0gICAgIyBqaGJ1aWxkIGlzIHJlYWxseSB1bmhhcHB5IGFib3V0IGhhdmluZyBNQUtFIGRl
ZmluZWQgdG8gc29tZXRoaW5nIGxpa2UgJ21ha2UgLWo0JwotICAgICMgc28gd2UganVzdCB1bmRl
ZmluZSBpdCBoZXJlLgotICAgIGVudl93aXRob3V0X21ha2UgPSBkaWN0KG9zLmVudmlyb24pCi0g
ICAgaWYgJ01BS0UnIGluIGVudl93aXRob3V0X21ha2U6Ci0gICAgICAgIGRlbCBlbnZfd2l0aG91
dF9tYWtlWydNQUtFJ10KLQotICAgIHByb2Nlc3MgPSBzdWJwcm9jZXNzLlBvcGVuKFsnLi9hdXRv
Z2VuLnNoJywgJy0tcHJlZml4PSVzJyAlIGluc3RhbGxhdGlvbl9wcmVmaXhdLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGN3ZD1qaGJ1aWxkX3NvdXJjZV9wYXRoLCBlbnY9ZW52X3dp
dGhvdXRfbWFrZSkKLSAgICBwcm9jZXNzLndhaXQoKQotICAgIGlmIHByb2Nlc3MucmV0dXJuY29k
ZSAhPSAwOgotICAgICAgICByYWlzZSBFeGNlcHRpb24oJ2poYnVpbGQgY29uZmlndXJlIGZhaWxl
ZCB3aXRoIHJldHVybiBjb2RlOiAlaScgJSBwcm9jZXNzLnJldHVybmNvZGUpCi0KLSAgICBwcm9j
ZXNzID0gc3VicHJvY2Vzcy5Qb3BlbihbJ21ha2UnLCAnaW5zdGFsbCddLCBjd2Q9amhidWlsZF9z
b3VyY2VfcGF0aCwgZW52PWVudl93aXRob3V0X21ha2UpCi0gICAgcHJvY2Vzcy53YWl0KCkKLSAg
ICBpZiBwcm9jZXNzLnJldHVybmNvZGUgIT0gMDoKLSAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCdq
aGJ1aWxkIGNvbmZpZ3VyZSBmYWlsZWQgd2l0aCByZXR1cm4gY29kZTogJWknICUgcHJvY2Vzcy5y
ZXR1cm5jb2RlKQotCi0KLWRlZiB1cGRhdGVfd2Via2l0Z3RrX2xpYnMoKToKLSAgICBwcm9jZXNz
ID0gc3VicHJvY2Vzcy5Qb3Blbihjb21tb24udG9wX2xldmVsX3BhdGgoJ1Rvb2xzJywgJ1Njcmlw
dHMnLCAndXBkYXRlLXdlYmtpdGd0ay1saWJzJykpCi0gICAgcHJvY2Vzcy53YWl0KCkKLSAgICBp
ZiBwcm9jZXNzLnJldHVybmNvZGUgIT0gMDoKLSAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCdqaGJ1
aWxkIGNvbmZpZ3VyZSBmYWlsZWQgd2l0aCByZXR1cm4gY29kZTogJWknICUgcHJvY2Vzcy5yZXR1
cm5jb2RlKQotCi0KLWRlZiBlbnN1cmVfamhidWlsZCgpOgotICAgIGlmIG5vdCBqaGJ1aWxkX2Ns
b25lZCgpOgotICAgICAgICBjbG9uZV9qaGJ1aWxkKCkKLSAgICAgICAgdXBkYXRlX2poYnVpbGQo
KQotICAgICAgICBpbnN0YWxsX2poYnVpbGQoKQotICAgICAgICB1cGRhdGVfd2Via2l0Z3RrX2xp
YnMoKQotICAgIGVsaWYgbm90IGpoYnVpbGRfaW5zdGFsbGVkKCkgXAotICAgICAgICAgICAgb3Ig
bm90IGpoYnVpbGRfYXRfZXhwZWN0ZWRfcmV2aXNpb24oKToKLSAgICAgICAgdXBkYXRlX2poYnVp
bGQoKQotICAgICAgICBpbnN0YWxsX2poYnVpbGQoKQotCi0KLWVuc3VyZV9qaGJ1aWxkKCkKLQot
Ci1wcm9jZXNzID0gc3VicHJvY2Vzcy5Qb3BlbihbamhidWlsZF9wYXRoLCAnLS1uby1pbnRlcmFj
dCcsICctZicsIGNvbW1vbi50b3BfbGV2ZWxfcGF0aCgnVG9vbHMnLCAnZ3RrJywgJ2poYnVpbGRy
YycpLCAncnVuJ10gKyBzeXMuYXJndlsxOl0pCi1wcm9jZXNzLndhaXQoKQotc3lzLmV4aXQocHJv
Y2Vzcy5yZXR1cm5jb2RlKQotCi0KLQpkaWZmIC0tZ2l0IGEvVG9vbHMvamhidWlsZC9ydW4td2l0
aC1qaGJ1aWxkIGIvVG9vbHMvamhidWlsZC9ydW4td2l0aC1qaGJ1aWxkCm5ldyBmaWxlIG1vZGUg
MTAwNzU1CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUy
ZjJiY2I5ZTU0N2RmOTE1YjI1ZWJlNDdlMDVkOWQyZWQ3ODgwOGEKLS0tIC9kZXYvbnVsbAorKysg
Yi9Ub29scy9qaGJ1aWxkL3J1bi13aXRoLWpoYnVpbGQKQEAgLTAsMCArMSwxMzMgQEAKKyMhL3Vz
ci9iaW4vZW52IHB5dGhvbgorIyBDb3B5cmlnaHQgKEMpIDIwMTEgSWdhbGlhIFMuTC4KKyMgQ29w
eXJpZ2h0IChDKSAyMDEyIEd1c3Rhdm8gTm9yb25oYSBTaWx2YSA8Z25zQGdub21lLm9yZz4KKyMg
Q29weXJpZ2h0IChDKSAyMDEyIEludGVsIENvcnBvcmF0aW9uCisjCisjIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyMgbW9kaWZ5
IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworIyBM
aWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo
ZXIKKyMgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBs
YXRlciB2ZXJzaW9uLgorIworIyBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv
cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3
aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyMgTUVSQ0hBTlRBQklMSVRZIG9y
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyMgTGVzc2Vy
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyMKKyMgWW91IHNob3Vs
ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwor
IyBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBG
cmVlIFNvZnR3YXJlCisjIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlm
dGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQorCitpbXBvcnQgb3MKK2ltcG9y
dCBzdWJwcm9jZXNzCitpbXBvcnQgc3lzCisKK3RvcF9sZXZlbF9kaXIgPSBOb25lCisKK2RlZiB0
b3BfbGV2ZWxfcGF0aCgqYXJncyk6CisgICAgZ2xvYmFsIHRvcF9sZXZlbF9kaXIKKyAgICBpZiBu
b3QgdG9wX2xldmVsX2RpcjoKKyAgICAgICAgdG9wX2xldmVsX2RpciA9IG9zLnBhdGguam9pbihv
cy5wYXRoLmRpcm5hbWUoX19maWxlX18pLCAnLi4nLCAnLi4nKQorICAgIHJldHVybiBvcy5wYXRo
LmpvaW4oKih0b3BfbGV2ZWxfZGlyLCkgKyBhcmdzKQorCitqaGJ1aWxkX3JldmlzaW9uID0gJzFl
ZWRjNDIzZjc1YzYwNTIyNGI0MzA1NzllNGMzMDMyOTIxOTk1MDcnCisKK2luc3RhbGxhdGlvbl9w
cmVmaXggPSBvcy5wYXRoLmFic3BhdGgodG9wX2xldmVsX3BhdGgoJ1dlYktpdEJ1aWxkJywgJ0Rl
cGVuZGVuY2llcycsICdSb290JykpCitzb3VyY2VfcGF0aCA9IG9zLnBhdGguYWJzcGF0aCh0b3Bf
bGV2ZWxfcGF0aCgnV2ViS2l0QnVpbGQnLCAnRGVwZW5kZW5jaWVzJywgJ1NvdXJjZScpKQoramhi
dWlsZF9zb3VyY2VfcGF0aCA9IG9zLnBhdGguam9pbihzb3VyY2VfcGF0aCwgJ2poYnVpbGQnKQor
amhidWlsZF9wYXRoID0gdG9wX2xldmVsX3BhdGgoJ1dlYktpdEJ1aWxkJywgJ0RlcGVuZGVuY2ll
cycsICdSb290JywgJ2JpbicsICdqaGJ1aWxkJykKK3BsYXRmb3JtID0gTm9uZTsKKworZGVmIGpo
YnVpbGRfaW5zdGFsbGVkKCk6CisgICAgcmV0dXJuIG9zLnBhdGguZXhpc3RzKGpoYnVpbGRfcGF0
aCkKKworCitkZWYgamhidWlsZF9jbG9uZWQoKToKKyAgICByZXR1cm4gb3MucGF0aC5leGlzdHMo
amhidWlsZF9zb3VyY2VfcGF0aCkKKworCitkZWYgamhidWlsZF9hdF9leHBlY3RlZF9yZXZpc2lv
bigpOgorICAgIHByb2Nlc3MgPSBzdWJwcm9jZXNzLlBvcGVuKFsnZ2l0JywgJ3Jldi1saXN0Jywg
J0hFQUReLi4nXSwgY3dkPWpoYnVpbGRfc291cmNlX3BhdGgsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSwgc3RkZXJyPXN1YnByb2Nlc3MuUElQ
RSkKKyAgICBvdXRwdXQsIGVyciA9IHByb2Nlc3MuY29tbXVuaWNhdGUoKQorICAgIGlmIHByb2Nl
c3MucmV0dXJuY29kZSAhPSAwOgorICAgICAgICByYWlzZSBFeGNlcHRpb24oJ2ZhaWxlZCB0byBm
aW5kIGpoYnVpbGQgcmV2aXNpb246ICVzJyAlIGVycikKKworICAgIHJldHVybiBvdXRwdXQuc3Ry
aXAoKSA9PSBqaGJ1aWxkX3JldmlzaW9uCisKKworZGVmIHVwZGF0ZV9qaGJ1aWxkKCk6CisgICAg
cHJvY2VzcyA9IHN1YnByb2Nlc3MuUG9wZW4oWydnaXQnLCAncmVtb3RlJywgJ3VwZGF0ZScsICdv
cmlnaW4nXSwgY3dkPWpoYnVpbGRfc291cmNlX3BhdGgpCisgICAgcHJvY2Vzcy53YWl0KCkKKyAg
ICBpZiBwcm9jZXNzLnJldHVybmNvZGUgIT0gMDoKKyAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCdq
aGJ1aWxkIHJlbW90ZSB1cGRhdGUgb3JpZ2luIGZhaWxlZCB3aXRoIHJldHVybiBjb2RlOiAlaScg
JSBwcm9jZXNzLnJldHVybmNvZGUpCisKKyAgICBwcm9jZXNzID0gc3VicHJvY2Vzcy5Qb3Blbihb
J2dpdCcsICdjaGVja291dCcsICclcycgJSBqaGJ1aWxkX3JldmlzaW9uXSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjd2Q9amhidWlsZF9zb3VyY2VfcGF0aCkKKyAgICBwcm9jZXNz
LndhaXQoKQorICAgIGlmIHByb2Nlc3MucmV0dXJuY29kZSAhPSAwOgorICAgICAgICByYWlzZSBF
eGNlcHRpb24oJ2ZhaWxlZCB0byBjaGVja291dCB0cmVlaXNoICVzOiAlaScgJSAoamhidWlsZF9y
ZXZpc2lvbiwgcHJvY2Vzcy5yZXR1cm5jb2RlKSkKKworCitkZWYgY2xvbmVfamhidWlsZCgpOgor
ICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhzb3VyY2VfcGF0aCk6CisgICAgICAgIG9zLm1ha2Vk
aXJzKHNvdXJjZV9wYXRoKQorICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhpbnN0YWxsYXRpb25f
cHJlZml4KToKKyAgICAgICAgb3MubWFrZWRpcnMoaW5zdGFsbGF0aW9uX3ByZWZpeCkKKworICAg
IHByb2Nlc3MgPSBzdWJwcm9jZXNzLlBvcGVuKFsnZ2l0JywgJ2Nsb25lJywgJ2dpdDovL2dpdC5n
bm9tZS5vcmcvamhidWlsZCddLCBjd2Q9c291cmNlX3BhdGgpCisgICAgcHJvY2Vzcy53YWl0KCkK
KyAgICBpZiBwcm9jZXNzLnJldHVybmNvZGUgIT0gMDoKKyAgICAgICAgcmFpc2UgRXhjZXB0aW9u
KCdqaGJ1aWxkIGdpdCBjbG9uZSBmYWlsZWQgd2l0aCByZXR1cm4gY29kZTogJWknICUgcHJvY2Vz
cy5yZXR1cm5jb2RlKQorCisKK2RlZiBpbnN0YWxsX2poYnVpbGQoKToKKyAgICAjIGpoYnVpbGQg
aXMgcmVhbGx5IHVuaGFwcHkgYWJvdXQgaGF2aW5nIE1BS0UgZGVmaW5lZCB0byBzb21ldGhpbmcg
bGlrZSAnbWFrZSAtajQnCisgICAgIyBzbyB3ZSBqdXN0IHVuZGVmaW5lIGl0IGhlcmUuCisgICAg
ZW52X3dpdGhvdXRfbWFrZSA9IGRpY3Qob3MuZW52aXJvbikKKyAgICBpZiAnTUFLRScgaW4gZW52
X3dpdGhvdXRfbWFrZToKKyAgICAgICAgZGVsIGVudl93aXRob3V0X21ha2VbJ01BS0UnXQorCisg
ICAgcHJvY2VzcyA9IHN1YnByb2Nlc3MuUG9wZW4oWycuL2F1dG9nZW4uc2gnLCAnLS1wcmVmaXg9
JXMnICUgaW5zdGFsbGF0aW9uX3ByZWZpeF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY3dkPWpoYnVpbGRfc291cmNlX3BhdGgsIGVudj1lbnZfd2l0aG91dF9tYWtlKQorICAgIHBy
b2Nlc3Mud2FpdCgpCisgICAgaWYgcHJvY2Vzcy5yZXR1cm5jb2RlICE9IDA6CisgICAgICAgIHJh
aXNlIEV4Y2VwdGlvbignamhidWlsZCBjb25maWd1cmUgZmFpbGVkIHdpdGggcmV0dXJuIGNvZGU6
ICVpJyAlIHByb2Nlc3MucmV0dXJuY29kZSkKKworICAgIHByb2Nlc3MgPSBzdWJwcm9jZXNzLlBv
cGVuKFsnbWFrZScsICdpbnN0YWxsJ10sIGN3ZD1qaGJ1aWxkX3NvdXJjZV9wYXRoLCBlbnY9ZW52
X3dpdGhvdXRfbWFrZSkKKyAgICBwcm9jZXNzLndhaXQoKQorICAgIGlmIHByb2Nlc3MucmV0dXJu
Y29kZSAhPSAwOgorICAgICAgICByYWlzZSBFeGNlcHRpb24oJ2poYnVpbGQgY29uZmlndXJlIGZh
aWxlZCB3aXRoIHJldHVybiBjb2RlOiAlaScgJSBwcm9jZXNzLnJldHVybmNvZGUpCisKKworZGVm
IHVwZGF0ZV93ZWJraXRfbGlic19qaGJ1aWxkKCk6CisgICAgcHJvY2VzcyA9IHN1YnByb2Nlc3Mu
UG9wZW4oW3RvcF9sZXZlbF9wYXRoKCdUb29scycsICdTY3JpcHRzJywgJ3VwZGF0ZS13ZWJraXRs
aWJzLWpoYnVpbGQnKSwgJy0tJyArIHBsYXRmb3JtXSkKKyAgICBwcm9jZXNzLndhaXQoKQorICAg
IGlmIHByb2Nlc3MucmV0dXJuY29kZSAhPSAwOgorICAgICAgICByYWlzZSBFeGNlcHRpb24oJ2po
YnVpbGQgY29uZmlndXJlIGZhaWxlZCB3aXRoIHJldHVybiBjb2RlOiAlaScgJSBwcm9jZXNzLnJl
dHVybmNvZGUpCisKK2RlZiBkZXRlcm1pbmVfcGxhdGZvcm0oKToKKyAgICBpZiAnLS1lZmwnIGlu
IHN5cy5hcmd2OgorICAgICAgICByZXR1cm4gImVmbCI7CisgICAgaWYgJy0tZ3RrJyBpbiBzeXMu
YXJndjoKKyAgICAgICAgcmV0dXJuICJndGsiOworICAgIHN5cy5leGl0KCJObyBwbGF0Zm9ybSBz
cGVjaWZpZWQgZm9yIHJ1bi13aXRoLWpoYnVpbGQuIikKKworZGVmIGVuc3VyZV9qaGJ1aWxkKCk6
CisgICAgaWYgbm90IGpoYnVpbGRfY2xvbmVkKCk6CisgICAgICAgIGNsb25lX2poYnVpbGQoKQor
ICAgICAgICB1cGRhdGVfamhidWlsZCgpCisgICAgICAgIGluc3RhbGxfamhidWlsZCgpCisgICAg
ICAgIHVwZGF0ZV93ZWJraXRfbGlic19qaGJ1aWxkKCkKKyAgICBlbGlmIG5vdCBqaGJ1aWxkX2lu
c3RhbGxlZCgpIFwKKyAgICAgICAgICAgIG9yIG5vdCBqaGJ1aWxkX2F0X2V4cGVjdGVkX3Jldmlz
aW9uKCk6CisgICAgICAgIHVwZGF0ZV9qaGJ1aWxkKCkKKyAgICAgICAgaW5zdGFsbF9qaGJ1aWxk
KCkKKworCitwbGF0Zm9ybSA9IGRldGVybWluZV9wbGF0Zm9ybSgpCitlbnN1cmVfamhidWlsZCgp
CisKK3Byb2Nlc3MgPSBzdWJwcm9jZXNzLlBvcGVuKFtqaGJ1aWxkX3BhdGgsICctLW5vLWludGVy
YWN0JywgJy1mJywgdG9wX2xldmVsX3BhdGgoJ1Rvb2xzJywgcGxhdGZvcm0sICdqaGJ1aWxkcmMn
KSwgJ3J1biddICsgc3lzLmFyZ3ZbMjpdKQorcHJvY2Vzcy53YWl0KCkKK3N5cy5leGl0KHByb2Nl
c3MucmV0dXJuY29kZSkKKwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>129203</attachid>
            <date>2012-02-28 00:20:04 -0800</date>
            <delta_ts>2012-02-28 07:09:22 -0800</delta_ts>
            <desc>Proposal for patching jhbuild related scripts, v2 fixing EWS error.</desc>
            <filename>bug-79673-20120228102009.patch</filename>
            <type>text/plain</type>
            <size>21395</size>
            <attacher name="Dominik Röttsches (drott)">d-r</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA4OTkzCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZTUzYWFlY2I1NWQxZWU1MTQ4NzY0OTljZGJiN2IwZTg3
ODY5ODJmNy4uNmE0MGU3MWM1YTYxNjU1ODNjZTk4ZWUzNzllMjZiZTgwODc0ZGY0YSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM2
IEBACisyMDEyLTAyLTI3ICBEb21pbmlrIFLDtnR0c2NoZXMgIDxkb21pbmlrLnJvdHRzY2hlc0Bs
aW51eC5pbnRlbC5jb20+CisKKyAgICAgICAgUGFyYW1ldHJpemUgcnVuLXdpdGgtamhidWlsZCBh
bmQgdXBkYXRlLXdlYmtpdGd0ay1saWJzIHdpdGggcGxhdGZvcm0gLS1ndGsvLS1lZmwKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc5NjczCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBCdWlsZFNsYXZlU3Vw
cG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9tYXN0ZXIuY2ZnOgorICAgICAgICAoSW5zdGFs
bEd0a0RlcGVuZGVuY2llcyk6CisgICAgICAgICogU2NyaXB0cy9ydW4tZ3RrLXRlc3RzOgorICAg
ICAgICAoVGVzdFJ1bm5lci5fX2luaXRfXyk6CisgICAgICAgIChUZXN0UnVubmVyLl9sb29rdXBf
YXRzcGkyX2JpbmFyeSk6CisgICAgICAgIChUZXN0UnVubmVyLnJ1bi5fZXJyb3JfaGFuZGxlcik6
CisgICAgICAgIChUZXN0UnVubmVyKToKKyAgICAgICAgKFRlc3RSdW5uZXIucnVuKToKKyAgICAg
ICAgKiBTY3JpcHRzL3VwZGF0ZS13ZWJraXRsaWJzLWpoYnVpbGQ6IFJlbmFtZWQgZnJvbSBUb29s
cy9TY3JpcHRzL3VwZGF0ZS13ZWJraXRndGstbGlicy4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtp
dGRpcnMucG06CisgICAgICAgIChydW5BdXRvZ2VuRm9yQXV0b3Rvb2xzUHJvamVjdElmTmVjZXNz
YXJ5KToKKyAgICAgICAgKGJ1aWxkQXV0b3Rvb2xzUHJvamVjdCk6CisgICAgICAgICogU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9ndGsucHk6CisgICAgICAgIChHdGtEcml2ZXIu
Y21kX2xpbmUpOgorICAgICAgICAqIGpoYnVpbGQvcnVuLXdpdGgtamhidWlsZDogUmVuYW1lZCBm
cm9tIFRvb2xzL2d0ay9ydW4td2l0aC1qaGJ1aWxkLgorICAgICAgICAodG9wX2xldmVsX3BhdGgp
OgorICAgICAgICAoamhidWlsZF9pbnN0YWxsZWQpOgorICAgICAgICAoamhidWlsZF9jbG9uZWQp
OgorICAgICAgICAoamhidWlsZF9hdF9leHBlY3RlZF9yZXZpc2lvbik6CisgICAgICAgICh1cGRh
dGVfamhidWlsZCk6CisgICAgICAgIChjbG9uZV9qaGJ1aWxkKToKKyAgICAgICAgKGluc3RhbGxf
amhidWlsZCk6CisgICAgICAgICh1cGRhdGVfd2Via2l0X2xpYnNfamhidWlsZCk6CisgICAgICAg
IChkZXRlcm1pbmVfcGxhdGZvcm0pOgorICAgICAgICAoZW5zdXJlX2poYnVpbGQpOgorCiAyMDEy
LTAyLTI3ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAg
ICAgICBVbnJldmlld2VkLiBGaXggbWFrZSBkaXN0Y2hlY2suCmRpZmYgLS1naXQgYS9Ub29scy9C
dWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9tYXN0ZXIuY2ZnIGIvVG9v
bHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvbWFzdGVyLmNmZwpp
bmRleCAwNWUxNTQwYzZkZTU5NTQ3Yjk4OWZiZGExMGY0OGQ1ZjA3YTYyNTJmLi41M2Y4ODllZjE3
ZmY2NDgzOWFkMDJjZThkMWIxMTgxMTIzMGRhYTg3IDEwMDY0NAotLS0gYS9Ub29scy9CdWlsZFNs
YXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9tYXN0ZXIuY2ZnCisrKyBiL1Rvb2xz
L0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL21hc3Rlci5jZmcKQEAg
LTEzMyw3ICsxMzMsNyBAQCBjbGFzcyBJbnN0YWxsR3RrRGVwZW5kZW5jaWVzKHNoZWxsLlNoZWxs
Q29tbWFuZCk6CiAgICAgbmFtZSA9ICJqaGJ1aWxkIgogICAgIGRlc2NyaXB0aW9uID0gWyJ1cGRh
dGluZyBndGsgZGVwZW5kZW5jaWVzIl0KICAgICBkZXNjcmlwdGlvbkRvbmUgPSBbInVwZGF0ZWQg
Z3RrIGRlcGVuZGVuY2llcyJdCi0gICAgY29tbWFuZCA9IFsicGVybCIsICIuL1Rvb2xzL1Njcmlw
dHMvdXBkYXRlLXdlYmtpdGd0ay1saWJzIl0KKyAgICBjb21tYW5kID0gWyJwZXJsIiwgIi4vVG9v
bHMvU2NyaXB0cy91cGRhdGUtd2Via2l0LWxpYnMtamhidWlsZCAtLWd0ayJdCiAgICAgaGFsdE9u
RmFpbHVyZSA9IFRydWUKIAogY2xhc3MgSW5zdGFsbENocm9taXVtRGVwZW5kZW5jaWVzKHNoZWxs
LlNoZWxsQ29tbWFuZCk6CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3J1bi1ndGstdGVzdHMg
Yi9Ub29scy9TY3JpcHRzL3J1bi1ndGstdGVzdHMKaW5kZXggMWZlY2RmMDYyNmEzYWE3NzA1N2Ji
MWMxYjk2NGM3OTI1ZmQzNTQ3My4uYzdjMTc4ZGI5NDdiNmE4NmM1ZTY4ZTg3NmY1MDdhMWNhZmYz
OTU2ZiAxMDA3NTUKLS0tIGEvVG9vbHMvU2NyaXB0cy9ydW4tZ3RrLXRlc3RzCisrKyBiL1Rvb2xz
L1NjcmlwdHMvcnVuLWd0ay10ZXN0cwpAQCAtNDksNiArNDksNyBAQCBjbGFzcyBUZXN0UnVubmVy
OgogICAgICAgICAgICAgYnVpbGRfZGlyZWN0b3J5ID0gb3MucGF0aC5qb2luKHRvcF9sZXZlbCwg
J1dlYktpdEJ1aWxkJywgJ0RlYnVnJykKIAogICAgICAgICBzZWxmLl9ndGtfdG9vbHNfZGlyZWN0
b3J5ID0gb3MucGF0aC5qb2luKHRvcF9sZXZlbCwgIlRvb2xzIiwgImd0ayIpCisgICAgICAgIHNl
bGYuX2poYnVpbGRfdG9vbHNfZGlyZWN0b3J5ID0gb3MucGF0aC5qb2luKHRvcF9sZXZlbCwgIlRv
b2xzIiwgImpoYnVpbGQiKQogICAgICAgICBzZWxmLl9wcm9ncmFtc19wYXRoID0gb3MucGF0aC5q
b2luKGJ1aWxkX2RpcmVjdG9yeSwgIlByb2dyYW1zIikKICAgICAgICAgc2VsZi5fdGVzdHMgPSBb
XQogICAgICAgICBmb3IgdGVzdF9kaXIgaW4gc2VsZi5URVNUX0RJUlM6CkBAIC02OSw3ICs3MCw3
IEBAIGNsYXNzIFRlc3RSdW5uZXI6CiAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3Rlc3RzLmFw
cGVuZCh0ZXN0X3BhdGgpCiAKICAgICBkZWYgX2xvb2t1cF9hdHNwaTJfYmluYXJ5KHNlbGYsIGpo
YnVpbGRfcGF0aCwgZmlsZW5hbWUpOgotICAgICAgICBleGVjX3ByZWZpeCA9IHNlbGYuX2V4ZWN1
dGl2ZS5ydW5fY29tbWFuZChbamhidWlsZF9wYXRoICwncGtnLWNvbmZpZycsICctLXZhcmlhYmxl
PWV4ZWNfcHJlZml4JywgJ2F0c3BpLTInXSkucnN0cmlwKCdcclxuJykKKyAgICAgICAgZXhlY19w
cmVmaXggPSBzZWxmLl9leGVjdXRpdmUucnVuX2NvbW1hbmQoW2poYnVpbGRfcGF0aCAsJy0tZ3Rr
JywgJ3BrZy1jb25maWcnLCAnLS12YXJpYWJsZT1leGVjX3ByZWZpeCcsICdhdHNwaS0yJ10pLnJz
dHJpcCgnXHJcbicpCiAgICAgICAgIHBhdGhzX3RvX2NoZWNrID0gWyAnbGliZXhlYycsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAnbGliL2F0LXNwaTItY29yZScsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAnbGliMzIvYXQtc3BpMi1jb3JlJwpAQCAtOTQsNyArOTUsNyBAQCBjbGFz
cyBUZXN0UnVubmVyOgogICAgICAgICBkZWYgX2Vycm9yX2hhbmRsZXIoZXJyb3IpOgogICAgICAg
ICAgICAgZXhpdF9zdGF0dXNbMF0gPSBlcnJvci5leGl0X2NvZGUKIAotICAgICAgICBqaGJ1aWxk
X3BhdGggPSBvcy5wYXRoLmpvaW4oc2VsZi5fZ3RrX3Rvb2xzX2RpcmVjdG9yeSwgInJ1bi13aXRo
LWpoYnVpbGQiKQorICAgICAgICBqaGJ1aWxkX3BhdGggPSBvcy5wYXRoLmpvaW4oc2VsZi5famhi
dWlsZF90b29sc19kaXJlY3RvcnksICJydW4td2l0aC1qaGJ1aWxkIikKIAogICAgICAgICAjIE1h
a2Ugc3VyZSB0aGUgYWNjZXNzaWJpbGl0eSBidXMgaXMgbGF1bmNoZWQuCiAgICAgICAgIGExMXlf
YnVzX2xhdW5jaGVkID0gRmFsc2UKQEAgLTExOSw3ICsxMjAsNyBAQCBjbGFzcyBUZXN0UnVubmVy
OgogICAgICAgICAgICAgICAgIHN5cy5zdGRlcnIuZmx1c2goKQogCiAgICAgICAgIGZvciB0ZXN0
IGluIHNlbGYuX3Rlc3RzOgotICAgICAgICAgICAgb3V0ID0gc2VsZi5fZXhlY3V0aXZlLnJ1bl9j
b21tYW5kKFtqaGJ1aWxkX3BhdGggLCdndGVzdGVyJywgdGVzdF0sIGVudj10ZXN0X2VudiwKKyAg
ICAgICAgICAgIG91dCA9IHNlbGYuX2V4ZWN1dGl2ZS5ydW5fY29tbWFuZChbamhidWlsZF9wYXRo
LCAnLS1ndGsnLCAnZ3Rlc3RlcicsIHRlc3RdLCBlbnY9dGVzdF9lbnYsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JfaGFuZGxlcj1fZXJyb3JfaGFu
ZGxlcikKICAgICAgICAgICAgIHN5cy5zdGRvdXQud3JpdGUob3V0KQogICAgICAgICAgICAgc3lz
LnN0ZG91dC5mbHVzaCgpCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3VwZGF0ZS13ZWJraXRn
dGstbGlicyBiL1Rvb2xzL1NjcmlwdHMvdXBkYXRlLXdlYmtpdGd0ay1saWJzCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDc1NQppbmRleCA4MDMzYzYyZWJmMjI5Yzc1YWJiNGI1MjFhNjdiMzE2Y2VjNDRj
Nzk1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Rvb2xz
L1NjcmlwdHMvdXBkYXRlLXdlYmtpdGd0ay1saWJzCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAs
MCBAQAotIyEvdXNyL2Jpbi9wZXJsIC13Ci0jIENvcHlyaWdodCAoQykgMjAxMSBJZ2FsaWEgUy5M
LgotIwotIyBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1
dGUgaXQgYW5kL29yCi0jIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNz
ZXIgR2VuZXJhbCBQdWJsaWMKLSMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0jIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3Ig
KGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSMKLSMgVGhpcyBsaWJyYXJ5IGlz
IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0jIGJ1dCBX
SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m
Ci0jIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g
IFNlZSB0aGUgR05VCi0jIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl
dGFpbHMuCi0jCi0jIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBM
ZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSMgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsg
aWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotIyBGb3VuZGF0aW9uLCBJbmMuLCA1
MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBV
U0EKLQotdXNlIEZpbmRCaW47Ci11c2UgbGliICRGaW5kQmluOjpCaW47Ci11c2Ugd2Via2l0ZGly
czsKLQotZGVsZXRlICRFTlZ7QVJfRkxBR1N9IGlmIGV4aXN0cyAkRU5We0FSX0ZMQUdTfTsKLQot
Y2hkaXIocmVsYXRpdmVTY3JpcHRzRGlyKCkgLiAiLy4uL2d0ayIpIG9yIGRpZSAkITsKLQotbXkg
QGVuc3VyZUpoYnVpbGRBcmdzID0gKCIuL3J1bi13aXRoLWpoYnVpbGQiLCAiZWNobyIsICJFbnN1
cmVkIGpoYnVpbGQgc2V0dXAuIik7Ci1pZiAoc3lzdGVtKEBlbnN1cmVKaGJ1aWxkQXJncykgIT0g
MCkgewotICAgIGRpZSAiRmFpbGVkIHRvIGVuc3VyZSBqaGJ1aWxkIGluc3RhbGxlZC5cbiI7Ci19
Ci0KLXByaW50ICJVcGRhdGluZyBHVEsrIHBvcnQgZGVwZW5kZW5jaWVzIHVzaW5nIGpoYnVpbGQu
Li5cbiI7Ci1teSBAamhidWlsZEFyZ3MgPSAoIi4uLy4uL1dlYktpdEJ1aWxkL0RlcGVuZGVuY2ll
cy9Sb290L2Jpbi9qaGJ1aWxkIiwgIi0tbm8taW50ZXJhY3QiLCAiLWYiLCAiamhidWlsZHJjIik7
Ci1wdXNoKEBqaGJ1aWxkQXJncywgQEFSR1ZbMS4uLTFdKTsKLWlmIChzeXN0ZW0oQGpoYnVpbGRB
cmdzKSAhPSAwKSB7Ci0gICAgZGllICJSdW5uaW5nIGpoYnVpbGQgZmFpbGVkLlxuIgotfQpkaWZm
IC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy91cGRhdGUtd2Via2l0bGlicy1qaGJ1aWxkIGIvVG9vbHMv
U2NyaXB0cy91cGRhdGUtd2Via2l0bGlicy1qaGJ1aWxkCm5ldyBmaWxlIG1vZGUgMTAwNzU1Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE4ZjI0YThkYWI0
ZTRlNjk3Zjg5NjI2MDc1MGI3M2MyNDA4MGQxNGYKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9T
Y3JpcHRzL3VwZGF0ZS13ZWJraXRsaWJzLWpoYnVpbGQKQEAgLTAsMCArMSw2MSBAQAorIyEvdXNy
L2Jpbi9wZXJsIC13CisjIENvcHlyaWdodCAoQykgMjAxMSBJZ2FsaWEgUy5MLgorIyBDb3B5cmln
aHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRpb24KKyMKKyMgVGhpcyBsaWJyYXJ5IGlzIGZyZWUg
c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorIyBtb2RpZnkgaXQgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisjIExpY2Vuc2Ug
YXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorIyB2
ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZl
cnNpb24uCisjCisjIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0
IGl0IHdpbGwgYmUgdXNlZnVsLAorIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg
ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorIyBMZXNzZXIgR2VuZXJh
bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorIworIyBZb3Ugc2hvdWxkIGhhdmUg
cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisjIExpY2Vu
c2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29m
dHdhcmUKKyMgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9v
ciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCisKK3VzZSBGaW5kQmluOwordXNlIGxpYiAk
RmluZEJpbjo6QmluOwordXNlIHdlYmtpdGRpcnM7Cit1c2UgR2V0b3B0OjpMb25nOworCitteSAk
cGxhdGZvcm1FZmwgPSAwOworbXkgJHBsYXRmb3JtR3RrID0gMDsKKworbXkgJGdldE9wdGlvbnNS
ZXN1bHQgPSBHZXRPcHRpb25zKAorICAgICdlZmwnID0+IFwkcGxhdGZvcm1FZmwsCisgICAgJ2d0
aycgPT4gXCRwbGF0Zm9ybUd0aworICAgICk7CisKK215ICRwbGF0Zm9ybSA9ICIiOworaWYgKCEk
Z2V0T3B0aW9uc1Jlc3VsdCkgeworICAgIHByaW50IFNUREVSUiAiTm8gcGxhdGZvcm0gc3BlY2lm
aWVkIGZvciAiIC4gYmFzZW5hbWUoJDApIC4iLiBVc2UgLS1ndGsgb3IgLS1lZmwuIjsKKyAgICBy
ZXR1cm4gMTsKK30gZWxzZSB7CisgICAgaWYgKCRwbGF0Zm9ybUVmbCkgeworICAgICAgICAkcGxh
dGZvcm0gPSAiZWZsIjsKKyAgICB9CisgICAgaWYgKCRwbGF0Zm9ybUd0aykgeworICAgICAgICAk
cGxhdGZvcm0gPSAiZ3RrIjsKKyAgICB9Cit9CisKK2RlbGV0ZSAkRU5We0FSX0ZMQUdTfSBpZiBl
eGlzdHMgJEVOVntBUl9GTEFHU307CisKK2NoZGlyKHJlbGF0aXZlU2NyaXB0c0RpcigpIC4gIi8u
Li9qaGJ1aWxkIikgb3IgZGllICQhOworCitteSBAZW5zdXJlSmhidWlsZEFyZ3MgPSAoIi4vcnVu
LXdpdGgtamhidWlsZCIsICItLSIuJHBsYXRmb3JtLCAiZWNobyIsICJFbnN1cmVkIGpoYnVpbGQg
c2V0dXAuIik7CitpZiAoc3lzdGVtKEBlbnN1cmVKaGJ1aWxkQXJncykgIT0gMCkgeworICAgIGRp
ZSAiRmFpbGVkIHRvIGVuc3VyZSBqaGJ1aWxkIGluc3RhbGxlZC5cbiI7Cit9CisKK2NoZGlyKHJl
bGF0aXZlU2NyaXB0c0RpcigpIC4gIi8uLi8iLiRwbGF0Zm9ybSkgb3IgZGllICQhOworCitwcmlu
dCAiVXBkYXRpbmcgR1RLKyBwb3J0IGRlcGVuZGVuY2llcyB1c2luZyBqaGJ1aWxkLi4uXG4iOwor
bXkgQGpoYnVpbGRBcmdzID0gKCIuLi8uLi9XZWJLaXRCdWlsZC9EZXBlbmRlbmNpZXMvUm9vdC9i
aW4vamhidWlsZCIsICItLW5vLWludGVyYWN0IiwgIi1mIiwgImpoYnVpbGRyYyIpOworcHVzaChA
amhidWlsZEFyZ3MsIEBBUkdWWzIuLi0xXSk7CitpZiAoc3lzdGVtKEBqaGJ1aWxkQXJncykgIT0g
MCkgeworICAgIGRpZSAiUnVubmluZyBqaGJ1aWxkIGZhaWxlZC5cbiIKK30KZGlmZiAtLWdpdCBh
L1Rvb2xzL1NjcmlwdHMvd2Via2l0ZGlycy5wbSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0ZGlycy5w
bQppbmRleCAwYjJhZGRmYzVmMTQwYjJiOTAzOWQyMjNiNzIwNTQ4ZmM1NGY1MmM1Li40ODNjYTFk
ZjkzY2VmODUwNGY1NTM1NzE3ZTAyMzE2NWI5MzE4N2YyIDEwMDc1NQotLS0gYS9Ub29scy9TY3Jp
cHRzL3dlYmtpdGRpcnMucG0KKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRkaXJzLnBtCkBAIC0x
ODIxLDcgKzE4MjEsOCBAQCBzdWIgcnVuQXV0b2dlbkZvckF1dG90b29sc1Byb2plY3RJZk5lY2Vz
c2FyeSgkQCkKIAogICAgICMgUHJlZml4IHRoZSBjb21tYW5kIHdpdGggamhidWlsZCBydW4uCiAg
ICAgdW5zaGlmdChAYnVpbGRBcmdzLCAiJHJlbFNvdXJjZURpci9hdXRvZ2VuLnNoIik7Ci0gICAg
dW5zaGlmdChAYnVpbGRBcmdzLCAiJHNvdXJjZURpci9Ub29scy9ndGsvcnVuLXdpdGgtamhidWls
ZCIpOworICAgIHVuc2hpZnQoQGJ1aWxkQXJncywgIi0tZ3RrIik7CisgICAgdW5zaGlmdChAYnVp
bGRBcmdzLCAiJHNvdXJjZURpci9Ub29scy9qaGJ1aWxkL3J1bi13aXRoLWpoYnVpbGQiKTsKICAg
ICBpZiAoc3lzdGVtKEBidWlsZEFyZ3MpIG5lIDApIHsKICAgICAgICAgZGllICJDYWxsaW5nIGF1
dG9nZW4uc2ggZmFpbGVkIVxuIjsKICAgICB9CkBAIC0xODk5LDcgKzE5MDAsNyBAQCBzdWIgYnVp
bGRBdXRvdG9vbHNQcm9qZWN0KCRAKQogCiAgICAgIyBXZSBtaWdodCBuZWVkIHRvIHVwZGF0ZSBq
aGJ1aWxkIGRlcGVuZGVuY2llcy4KICAgICBpZiAoY2hlY2tGb3JBcmd1bWVudEFuZFJlbW92ZUZy
b21BcnJheVJlZigiLS11cGRhdGUtZ3RrIiwgXEBidWlsZFBhcmFtcykpIHsKLSAgICAgICAgc3lz
dGVtKCJwZXJsIiwgIiRzb3VyY2VEaXIvVG9vbHMvU2NyaXB0cy91cGRhdGUtd2Via2l0Z3RrLWxp
YnMiKSA9PSAwIG9yIGRpZSAkITsKKyAgICAgICAgc3lzdGVtKCJwZXJsIiwgIiRzb3VyY2VEaXIv
VG9vbHMvU2NyaXB0cy91cGRhdGUtd2Via2l0bGlicy1qaGJ1aWxkIiwgIi0tZ3RrIikgPT0gMCBv
ciBkaWUgJCE7CiAgICAgfQogCiAgICAgbXkgQGJ1aWxkQXJncyA9ICgpOwpAQCAtMTk0MiwxNiAr
MTk0MywxNyBAQCBzdWIgYnVpbGRBdXRvdG9vbHNQcm9qZWN0KCRAKQogICAgICMgZGVwZW5kZW5j
aWVzIGFuZCByZS1ydW4gYXV0b2dlbi5zaCB3aGVuIGJ1aWxkIGZpbGVzIGNoYW5nZS4KICAgICBy
dW5BdXRvZ2VuRm9yQXV0b3Rvb2xzUHJvamVjdElmTmVjZXNzYXJ5KCRkaXIsICRwcmVmaXgsICRz
b3VyY2VEaXIsICRwcm9qZWN0LCBAYnVpbGRBcmdzKTsKIAotICAgIG15ICRndGtTY3JpcHRzUGF0
aCA9ICIkc291cmNlRGlyL1Rvb2xzL2d0ayI7Ci0gICAgbXkgJHJ1bldpdGhKaGJ1aWxkID0gIiRn
dGtTY3JpcHRzUGF0aC9ydW4td2l0aC1qaGJ1aWxkIjsKLSAgICBpZiAoc3lzdGVtKCIkcnVuV2l0
aEpoYnVpbGQgJG1ha2UgJG1ha2VBcmdzIikgbmUgMCkgeworICAgIG15ICRqaGJ1aWxkUGF0aCA9
ICIkc291cmNlRGlyL1Rvb2xzL2poYnVpbGQiOworICAgIG15ICRydW5XaXRoSmhidWlsZCA9ICIk
amhidWlsZFBhdGgvcnVuLXdpdGgtamhidWlsZCI7CisgICAgaWYgKHN5c3RlbSgiJHJ1bldpdGhK
aGJ1aWxkIC0tZ3RrICRtYWtlICRtYWtlQXJncyIpIG5lIDApIHsKICAgICAgICAgZGllICJcbkZh
aWxlZCB0byBidWlsZCBXZWJLaXQgdXNpbmcgJyRtYWtlJyFcbiI7CiAgICAgfQogCiAgICAgY2hk
aXIgIi4uIiBvciBkaWU7CisgICAgbXkgJGd0a1NjcmlwdHNQYXRoID0gIiRzb3VyY2VEaXIvVG9v
bHMvZ3RrIjsKIAogICAgIGlmICgkcHJvamVjdCBlcSAnV2ViS2l0JyAmJiAhaXNDcm9zc0NvbXBp
bGF0aW9uKCkpIHsKLSAgICAgICAgbXkgQGRvY0dlbmVyYXRpb25PcHRpb25zID0gKCRydW5XaXRo
SmhidWlsZCwgIiRndGtTY3JpcHRzUGF0aC9nZW5lcmF0ZS1ndGtkb2MiLCAiLS1za2lwLWh0bWwi
KTsKKyAgICAgICAgbXkgQGRvY0dlbmVyYXRpb25PcHRpb25zID0gKCRydW5XaXRoSmhidWlsZCwg
Ii0tZ3RrIiwgIiRndGtTY3JpcHRzUGF0aC9nZW5lcmF0ZS1ndGtkb2MiLCAiLS1za2lwLWh0bWwi
KTsKICAgICAgICAgaWYgKCRkZWJ1ZykgewogICAgICAgICAgICAgcHVzaChAZG9jR2VuZXJhdGlv
bk9wdGlvbnMsICItLWRlYnVnIik7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZ3RrLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9sYXlvdXRfdGVzdHMvcG9ydC9ndGsucHkKaW5kZXggYzllZTFjYmZlNmQzNWE2OWVlNTU3
Y2I5ODg4Mjg0ZGFhNGYyMDc2ZC4uNjJhZmI3NzA1MjcwNjU4MDQxOGI5OWU0YTE3YWRiYTk4NzBk
NjE4OSAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9y
dC9ndGsucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9n
dGsucHkKQEAgLTY1LDggKzY1LDggQEAgY2xhc3MgR3RrRHJpdmVyKFdlYktpdERyaXZlcik6CiAg
ICAgICAgICAgICBzZWxmLl94dmZiX3Byb2Nlc3MgPSBOb25lCiAKICAgICBkZWYgY21kX2xpbmUo
c2VsZik6Ci0gICAgICAgIHdyYXBwZXJfcGF0aCA9IHNlbGYuX3BvcnQucGF0aF9mcm9tX3dlYmtp
dF9iYXNlKCJUb29scyIsICJndGsiLCAicnVuLXdpdGgtamhidWlsZCIpCi0gICAgICAgIHJldHVy
biBbd3JhcHBlcl9wYXRoXSArIFdlYktpdERyaXZlci5jbWRfbGluZShzZWxmKQorICAgICAgICB3
cmFwcGVyX3BhdGggPSBzZWxmLl9wb3J0LnBhdGhfZnJvbV93ZWJraXRfYmFzZSgiVG9vbHMiLCAi
amhidWlsZCIsICJydW4td2l0aC1qaGJ1aWxkIikKKyAgICAgICAgcmV0dXJuIFt3cmFwcGVyX3Bh
dGhdICsgWyItLWd0ayJdICsgV2ViS2l0RHJpdmVyLmNtZF9saW5lKHNlbGYpCiAKIAogY2xhc3Mg
R3RrUG9ydChXZWJLaXRQb3J0KToKZGlmZiAtLWdpdCBhL1Rvb2xzL2d0ay9ydW4td2l0aC1qaGJ1
aWxkIGIvVG9vbHMvZ3RrL3J1bi13aXRoLWpoYnVpbGQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1
CmluZGV4IDVmODhlZDA1MzFiNmUwMTQ1YzMyZjYzNzRkNGIxOTdjNWU0M2I1ZTEuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvVG9vbHMvZ3RrL3J1bi13aXRo
LWpoYnVpbGQKKysrIC9kZXYvbnVsbApAQCAtMSwxMjIgKzAsMCBAQAotIyEvdXNyL2Jpbi9lbnYg
cHl0aG9uCi0jIENvcHlyaWdodCAoQykgMjAxMSBJZ2FsaWEgUy5MLgotIyBDb3B5cmlnaHQgKEMp
IDIwMTIgR3VzdGF2byBOb3JvbmhhIFNpbHZhIDxnbnNAZ25vbWUub3JnPgotIwotIyBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0j
IG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJs
aWMKLSMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
bjsgZWl0aGVyCi0jIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9u
KSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSMKLSMgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGlu
IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0jIGJ1dCBXSVRIT1VUIEFOWSBXQVJS
QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0jIE1FUkNIQU5UQUJJ
TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0j
IExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0jCi0jIFlv
dSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQ
dWJsaWMKLSMgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0
byB0aGUgRnJlZSBTb2Z0d2FyZQotIyBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJl
ZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EKLQotaW1wb3J0IGNv
bW1vbgotaW1wb3J0IG9zCi1pbXBvcnQgc3VicHJvY2VzcwotaW1wb3J0IHN5cwotCi0KLWpoYnVp
bGRfcmV2aXNpb24gPSAnMWVlZGM0MjNmNzVjNjA1MjI0YjQzMDU3OWU0YzMwMzI5MjE5OTUwNycK
LQotaW5zdGFsbGF0aW9uX3ByZWZpeCA9IG9zLnBhdGguYWJzcGF0aChjb21tb24udG9wX2xldmVs
X3BhdGgoJ1dlYktpdEJ1aWxkJywgJ0RlcGVuZGVuY2llcycsICdSb290JykpCi1zb3VyY2VfcGF0
aCA9IG9zLnBhdGguYWJzcGF0aChjb21tb24udG9wX2xldmVsX3BhdGgoJ1dlYktpdEJ1aWxkJywg
J0RlcGVuZGVuY2llcycsICdTb3VyY2UnKSkKLWpoYnVpbGRfc291cmNlX3BhdGggPSBvcy5wYXRo
LmpvaW4oc291cmNlX3BhdGgsICdqaGJ1aWxkJykKLWpoYnVpbGRfcGF0aCA9IGNvbW1vbi50b3Bf
bGV2ZWxfcGF0aCgnV2ViS2l0QnVpbGQnLCAnRGVwZW5kZW5jaWVzJywgJ1Jvb3QnLCAnYmluJywg
J2poYnVpbGQnKQotCi0KLWRlZiBqaGJ1aWxkX2luc3RhbGxlZCgpOgotICAgIHJldHVybiBvcy5w
YXRoLmV4aXN0cyhqaGJ1aWxkX3BhdGgpCi0KLQotZGVmIGpoYnVpbGRfY2xvbmVkKCk6Ci0gICAg
cmV0dXJuIG9zLnBhdGguZXhpc3RzKGpoYnVpbGRfc291cmNlX3BhdGgpCi0KLQotZGVmIGpoYnVp
bGRfYXRfZXhwZWN0ZWRfcmV2aXNpb24oKToKLSAgICBwcm9jZXNzID0gc3VicHJvY2Vzcy5Qb3Bl
bihbJ2dpdCcsICdyZXYtbGlzdCcsICdIRUFEXi4uJ10sIGN3ZD1qaGJ1aWxkX3NvdXJjZV9wYXRo
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUs
IHN0ZGVycj1zdWJwcm9jZXNzLlBJUEUpCi0gICAgb3V0cHV0LCBlcnIgPSBwcm9jZXNzLmNvbW11
bmljYXRlKCkKLSAgICBpZiBwcm9jZXNzLnJldHVybmNvZGUgIT0gMDoKLSAgICAgICAgcmFpc2Ug
RXhjZXB0aW9uKCdmYWlsZWQgdG8gZmluZCBqaGJ1aWxkIHJldmlzaW9uOiAlcycgJSBlcnIpCi0K
LSAgICByZXR1cm4gb3V0cHV0LnN0cmlwKCkgPT0gamhidWlsZF9yZXZpc2lvbgotCi0KLWRlZiB1
cGRhdGVfamhidWlsZCgpOgotICAgIHByb2Nlc3MgPSBzdWJwcm9jZXNzLlBvcGVuKFsnZ2l0Jywg
J3JlbW90ZScsICd1cGRhdGUnLCAnb3JpZ2luJ10sIGN3ZD1qaGJ1aWxkX3NvdXJjZV9wYXRoKQot
ICAgIHByb2Nlc3Mud2FpdCgpCi0gICAgaWYgcHJvY2Vzcy5yZXR1cm5jb2RlICE9IDA6Ci0gICAg
ICAgIHJhaXNlIEV4Y2VwdGlvbignamhidWlsZCByZW1vdGUgdXBkYXRlIG9yaWdpbiBmYWlsZWQg
d2l0aCByZXR1cm4gY29kZTogJWknICUgcHJvY2Vzcy5yZXR1cm5jb2RlKQotCi0gICAgcHJvY2Vz
cyA9IHN1YnByb2Nlc3MuUG9wZW4oWydnaXQnLCAnY2hlY2tvdXQnLCAnJXMnICUgamhidWlsZF9y
ZXZpc2lvbl0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3dkPWpoYnVpbGRfc291
cmNlX3BhdGgpCi0gICAgcHJvY2Vzcy53YWl0KCkKLSAgICBpZiBwcm9jZXNzLnJldHVybmNvZGUg
IT0gMDoKLSAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCdmYWlsZWQgdG8gY2hlY2tvdXQgdHJlZWlz
aCAlczogJWknICUgKGpoYnVpbGRfcmV2aXNpb24sIHByb2Nlc3MucmV0dXJuY29kZSkpCi0KLQot
ZGVmIGNsb25lX2poYnVpbGQoKToKLSAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoc291cmNlX3Bh
dGgpOgotICAgICAgICBvcy5tYWtlZGlycyhzb3VyY2VfcGF0aCkKLSAgICBpZiBub3Qgb3MucGF0
aC5leGlzdHMoaW5zdGFsbGF0aW9uX3ByZWZpeCk6Ci0gICAgICAgIG9zLm1ha2VkaXJzKGluc3Rh
bGxhdGlvbl9wcmVmaXgpCi0KLSAgICBwcm9jZXNzID0gc3VicHJvY2Vzcy5Qb3BlbihbJ2dpdCcs
ICdjbG9uZScsICdnaXQ6Ly9naXQuZ25vbWUub3JnL2poYnVpbGQnXSwgY3dkPXNvdXJjZV9wYXRo
KQotICAgIHByb2Nlc3Mud2FpdCgpCi0gICAgaWYgcHJvY2Vzcy5yZXR1cm5jb2RlICE9IDA6Ci0g
ICAgICAgIHJhaXNlIEV4Y2VwdGlvbignamhidWlsZCBnaXQgY2xvbmUgZmFpbGVkIHdpdGggcmV0
dXJuIGNvZGU6ICVpJyAlIHByb2Nlc3MucmV0dXJuY29kZSkKLQotCi1kZWYgaW5zdGFsbF9qaGJ1
aWxkKCk6Ci0gICAgIyBqaGJ1aWxkIGlzIHJlYWxseSB1bmhhcHB5IGFib3V0IGhhdmluZyBNQUtF
IGRlZmluZWQgdG8gc29tZXRoaW5nIGxpa2UgJ21ha2UgLWo0JwotICAgICMgc28gd2UganVzdCB1
bmRlZmluZSBpdCBoZXJlLgotICAgIGVudl93aXRob3V0X21ha2UgPSBkaWN0KG9zLmVudmlyb24p
Ci0gICAgaWYgJ01BS0UnIGluIGVudl93aXRob3V0X21ha2U6Ci0gICAgICAgIGRlbCBlbnZfd2l0
aG91dF9tYWtlWydNQUtFJ10KLQotICAgIHByb2Nlc3MgPSBzdWJwcm9jZXNzLlBvcGVuKFsnLi9h
dXRvZ2VuLnNoJywgJy0tcHJlZml4PSVzJyAlIGluc3RhbGxhdGlvbl9wcmVmaXhdLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGN3ZD1qaGJ1aWxkX3NvdXJjZV9wYXRoLCBlbnY9ZW52
X3dpdGhvdXRfbWFrZSkKLSAgICBwcm9jZXNzLndhaXQoKQotICAgIGlmIHByb2Nlc3MucmV0dXJu
Y29kZSAhPSAwOgotICAgICAgICByYWlzZSBFeGNlcHRpb24oJ2poYnVpbGQgY29uZmlndXJlIGZh
aWxlZCB3aXRoIHJldHVybiBjb2RlOiAlaScgJSBwcm9jZXNzLnJldHVybmNvZGUpCi0KLSAgICBw
cm9jZXNzID0gc3VicHJvY2Vzcy5Qb3BlbihbJ21ha2UnLCAnaW5zdGFsbCddLCBjd2Q9amhidWls
ZF9zb3VyY2VfcGF0aCwgZW52PWVudl93aXRob3V0X21ha2UpCi0gICAgcHJvY2Vzcy53YWl0KCkK
LSAgICBpZiBwcm9jZXNzLnJldHVybmNvZGUgIT0gMDoKLSAgICAgICAgcmFpc2UgRXhjZXB0aW9u
KCdqaGJ1aWxkIGNvbmZpZ3VyZSBmYWlsZWQgd2l0aCByZXR1cm4gY29kZTogJWknICUgcHJvY2Vz
cy5yZXR1cm5jb2RlKQotCi0KLWRlZiB1cGRhdGVfd2Via2l0Z3RrX2xpYnMoKToKLSAgICBwcm9j
ZXNzID0gc3VicHJvY2Vzcy5Qb3Blbihjb21tb24udG9wX2xldmVsX3BhdGgoJ1Rvb2xzJywgJ1Nj
cmlwdHMnLCAndXBkYXRlLXdlYmtpdGd0ay1saWJzJykpCi0gICAgcHJvY2Vzcy53YWl0KCkKLSAg
ICBpZiBwcm9jZXNzLnJldHVybmNvZGUgIT0gMDoKLSAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCdq
aGJ1aWxkIGNvbmZpZ3VyZSBmYWlsZWQgd2l0aCByZXR1cm4gY29kZTogJWknICUgcHJvY2Vzcy5y
ZXR1cm5jb2RlKQotCi0KLWRlZiBlbnN1cmVfamhidWlsZCgpOgotICAgIGlmIG5vdCBqaGJ1aWxk
X2Nsb25lZCgpOgotICAgICAgICBjbG9uZV9qaGJ1aWxkKCkKLSAgICAgICAgdXBkYXRlX2poYnVp
bGQoKQotICAgICAgICBpbnN0YWxsX2poYnVpbGQoKQotICAgICAgICB1cGRhdGVfd2Via2l0Z3Rr
X2xpYnMoKQotICAgIGVsaWYgbm90IGpoYnVpbGRfaW5zdGFsbGVkKCkgXAotICAgICAgICAgICAg
b3Igbm90IGpoYnVpbGRfYXRfZXhwZWN0ZWRfcmV2aXNpb24oKToKLSAgICAgICAgdXBkYXRlX2po
YnVpbGQoKQotICAgICAgICBpbnN0YWxsX2poYnVpbGQoKQotCi0KLWVuc3VyZV9qaGJ1aWxkKCkK
LQotCi1wcm9jZXNzID0gc3VicHJvY2Vzcy5Qb3BlbihbamhidWlsZF9wYXRoLCAnLS1uby1pbnRl
cmFjdCcsICctZicsIGNvbW1vbi50b3BfbGV2ZWxfcGF0aCgnVG9vbHMnLCAnZ3RrJywgJ2poYnVp
bGRyYycpLCAncnVuJ10gKyBzeXMuYXJndlsxOl0pCi1wcm9jZXNzLndhaXQoKQotc3lzLmV4aXQo
cHJvY2Vzcy5yZXR1cm5jb2RlKQotCi0KLQpkaWZmIC0tZ2l0IGEvVG9vbHMvamhidWlsZC9ydW4t
d2l0aC1qaGJ1aWxkIGIvVG9vbHMvamhidWlsZC9ydW4td2l0aC1qaGJ1aWxkCm5ldyBmaWxlIG1v
ZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmUyZjJiY2I5ZTU0N2RmOTE1YjI1ZWJlNDdlMDVkOWQyZWQ3ODgwOGEKLS0tIC9kZXYvbnVsbAor
KysgYi9Ub29scy9qaGJ1aWxkL3J1bi13aXRoLWpoYnVpbGQKQEAgLTAsMCArMSwxMzMgQEAKKyMh
L3Vzci9iaW4vZW52IHB5dGhvbgorIyBDb3B5cmlnaHQgKEMpIDIwMTEgSWdhbGlhIFMuTC4KKyMg
Q29weXJpZ2h0IChDKSAyMDEyIEd1c3Rhdm8gTm9yb25oYSBTaWx2YSA8Z25zQGdub21lLm9yZz4K
KyMgQ29weXJpZ2h0IChDKSAyMDEyIEludGVsIENvcnBvcmF0aW9uCisjCisjIFRoaXMgbGlicmFy
eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyMgbW9k
aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwor
IyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBl
aXRoZXIKKyMgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFu
eSBsYXRlciB2ZXJzaW9uLgorIworIyBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhl
IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ
OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyMgTUVSQ0hBTlRBQklMSVRZ
IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyMgTGVz
c2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyMKKyMgWW91IHNo
b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1Ymxp
YworIyBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRo
ZSBGcmVlIFNvZnR3YXJlCisjIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwg
RmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQorCitpbXBvcnQgb3MKK2lt
cG9ydCBzdWJwcm9jZXNzCitpbXBvcnQgc3lzCisKK3RvcF9sZXZlbF9kaXIgPSBOb25lCisKK2Rl
ZiB0b3BfbGV2ZWxfcGF0aCgqYXJncyk6CisgICAgZ2xvYmFsIHRvcF9sZXZlbF9kaXIKKyAgICBp
ZiBub3QgdG9wX2xldmVsX2RpcjoKKyAgICAgICAgdG9wX2xldmVsX2RpciA9IG9zLnBhdGguam9p
bihvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pLCAnLi4nLCAnLi4nKQorICAgIHJldHVybiBvcy5w
YXRoLmpvaW4oKih0b3BfbGV2ZWxfZGlyLCkgKyBhcmdzKQorCitqaGJ1aWxkX3JldmlzaW9uID0g
JzFlZWRjNDIzZjc1YzYwNTIyNGI0MzA1NzllNGMzMDMyOTIxOTk1MDcnCisKK2luc3RhbGxhdGlv
bl9wcmVmaXggPSBvcy5wYXRoLmFic3BhdGgodG9wX2xldmVsX3BhdGgoJ1dlYktpdEJ1aWxkJywg
J0RlcGVuZGVuY2llcycsICdSb290JykpCitzb3VyY2VfcGF0aCA9IG9zLnBhdGguYWJzcGF0aCh0
b3BfbGV2ZWxfcGF0aCgnV2ViS2l0QnVpbGQnLCAnRGVwZW5kZW5jaWVzJywgJ1NvdXJjZScpKQor
amhidWlsZF9zb3VyY2VfcGF0aCA9IG9zLnBhdGguam9pbihzb3VyY2VfcGF0aCwgJ2poYnVpbGQn
KQoramhidWlsZF9wYXRoID0gdG9wX2xldmVsX3BhdGgoJ1dlYktpdEJ1aWxkJywgJ0RlcGVuZGVu
Y2llcycsICdSb290JywgJ2JpbicsICdqaGJ1aWxkJykKK3BsYXRmb3JtID0gTm9uZTsKKworZGVm
IGpoYnVpbGRfaW5zdGFsbGVkKCk6CisgICAgcmV0dXJuIG9zLnBhdGguZXhpc3RzKGpoYnVpbGRf
cGF0aCkKKworCitkZWYgamhidWlsZF9jbG9uZWQoKToKKyAgICByZXR1cm4gb3MucGF0aC5leGlz
dHMoamhidWlsZF9zb3VyY2VfcGF0aCkKKworCitkZWYgamhidWlsZF9hdF9leHBlY3RlZF9yZXZp
c2lvbigpOgorICAgIHByb2Nlc3MgPSBzdWJwcm9jZXNzLlBvcGVuKFsnZ2l0JywgJ3Jldi1saXN0
JywgJ0hFQUReLi4nXSwgY3dkPWpoYnVpbGRfc291cmNlX3BhdGgsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSwgc3RkZXJyPXN1YnByb2Nlc3Mu
UElQRSkKKyAgICBvdXRwdXQsIGVyciA9IHByb2Nlc3MuY29tbXVuaWNhdGUoKQorICAgIGlmIHBy
b2Nlc3MucmV0dXJuY29kZSAhPSAwOgorICAgICAgICByYWlzZSBFeGNlcHRpb24oJ2ZhaWxlZCB0
byBmaW5kIGpoYnVpbGQgcmV2aXNpb246ICVzJyAlIGVycikKKworICAgIHJldHVybiBvdXRwdXQu
c3RyaXAoKSA9PSBqaGJ1aWxkX3JldmlzaW9uCisKKworZGVmIHVwZGF0ZV9qaGJ1aWxkKCk6Cisg
ICAgcHJvY2VzcyA9IHN1YnByb2Nlc3MuUG9wZW4oWydnaXQnLCAncmVtb3RlJywgJ3VwZGF0ZScs
ICdvcmlnaW4nXSwgY3dkPWpoYnVpbGRfc291cmNlX3BhdGgpCisgICAgcHJvY2Vzcy53YWl0KCkK
KyAgICBpZiBwcm9jZXNzLnJldHVybmNvZGUgIT0gMDoKKyAgICAgICAgcmFpc2UgRXhjZXB0aW9u
KCdqaGJ1aWxkIHJlbW90ZSB1cGRhdGUgb3JpZ2luIGZhaWxlZCB3aXRoIHJldHVybiBjb2RlOiAl
aScgJSBwcm9jZXNzLnJldHVybmNvZGUpCisKKyAgICBwcm9jZXNzID0gc3VicHJvY2Vzcy5Qb3Bl
bihbJ2dpdCcsICdjaGVja291dCcsICclcycgJSBqaGJ1aWxkX3JldmlzaW9uXSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjd2Q9amhidWlsZF9zb3VyY2VfcGF0aCkKKyAgICBwcm9j
ZXNzLndhaXQoKQorICAgIGlmIHByb2Nlc3MucmV0dXJuY29kZSAhPSAwOgorICAgICAgICByYWlz
ZSBFeGNlcHRpb24oJ2ZhaWxlZCB0byBjaGVja291dCB0cmVlaXNoICVzOiAlaScgJSAoamhidWls
ZF9yZXZpc2lvbiwgcHJvY2Vzcy5yZXR1cm5jb2RlKSkKKworCitkZWYgY2xvbmVfamhidWlsZCgp
OgorICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhzb3VyY2VfcGF0aCk6CisgICAgICAgIG9zLm1h
a2VkaXJzKHNvdXJjZV9wYXRoKQorICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhpbnN0YWxsYXRp
b25fcHJlZml4KToKKyAgICAgICAgb3MubWFrZWRpcnMoaW5zdGFsbGF0aW9uX3ByZWZpeCkKKwor
ICAgIHByb2Nlc3MgPSBzdWJwcm9jZXNzLlBvcGVuKFsnZ2l0JywgJ2Nsb25lJywgJ2dpdDovL2dp
dC5nbm9tZS5vcmcvamhidWlsZCddLCBjd2Q9c291cmNlX3BhdGgpCisgICAgcHJvY2Vzcy53YWl0
KCkKKyAgICBpZiBwcm9jZXNzLnJldHVybmNvZGUgIT0gMDoKKyAgICAgICAgcmFpc2UgRXhjZXB0
aW9uKCdqaGJ1aWxkIGdpdCBjbG9uZSBmYWlsZWQgd2l0aCByZXR1cm4gY29kZTogJWknICUgcHJv
Y2Vzcy5yZXR1cm5jb2RlKQorCisKK2RlZiBpbnN0YWxsX2poYnVpbGQoKToKKyAgICAjIGpoYnVp
bGQgaXMgcmVhbGx5IHVuaGFwcHkgYWJvdXQgaGF2aW5nIE1BS0UgZGVmaW5lZCB0byBzb21ldGhp
bmcgbGlrZSAnbWFrZSAtajQnCisgICAgIyBzbyB3ZSBqdXN0IHVuZGVmaW5lIGl0IGhlcmUuCisg
ICAgZW52X3dpdGhvdXRfbWFrZSA9IGRpY3Qob3MuZW52aXJvbikKKyAgICBpZiAnTUFLRScgaW4g
ZW52X3dpdGhvdXRfbWFrZToKKyAgICAgICAgZGVsIGVudl93aXRob3V0X21ha2VbJ01BS0UnXQor
CisgICAgcHJvY2VzcyA9IHN1YnByb2Nlc3MuUG9wZW4oWycuL2F1dG9nZW4uc2gnLCAnLS1wcmVm
aXg9JXMnICUgaW5zdGFsbGF0aW9uX3ByZWZpeF0sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY3dkPWpoYnVpbGRfc291cmNlX3BhdGgsIGVudj1lbnZfd2l0aG91dF9tYWtlKQorICAg
IHByb2Nlc3Mud2FpdCgpCisgICAgaWYgcHJvY2Vzcy5yZXR1cm5jb2RlICE9IDA6CisgICAgICAg
IHJhaXNlIEV4Y2VwdGlvbignamhidWlsZCBjb25maWd1cmUgZmFpbGVkIHdpdGggcmV0dXJuIGNv
ZGU6ICVpJyAlIHByb2Nlc3MucmV0dXJuY29kZSkKKworICAgIHByb2Nlc3MgPSBzdWJwcm9jZXNz
LlBvcGVuKFsnbWFrZScsICdpbnN0YWxsJ10sIGN3ZD1qaGJ1aWxkX3NvdXJjZV9wYXRoLCBlbnY9
ZW52X3dpdGhvdXRfbWFrZSkKKyAgICBwcm9jZXNzLndhaXQoKQorICAgIGlmIHByb2Nlc3MucmV0
dXJuY29kZSAhPSAwOgorICAgICAgICByYWlzZSBFeGNlcHRpb24oJ2poYnVpbGQgY29uZmlndXJl
IGZhaWxlZCB3aXRoIHJldHVybiBjb2RlOiAlaScgJSBwcm9jZXNzLnJldHVybmNvZGUpCisKKwor
ZGVmIHVwZGF0ZV93ZWJraXRfbGlic19qaGJ1aWxkKCk6CisgICAgcHJvY2VzcyA9IHN1YnByb2Nl
c3MuUG9wZW4oW3RvcF9sZXZlbF9wYXRoKCdUb29scycsICdTY3JpcHRzJywgJ3VwZGF0ZS13ZWJr
aXRsaWJzLWpoYnVpbGQnKSwgJy0tJyArIHBsYXRmb3JtXSkKKyAgICBwcm9jZXNzLndhaXQoKQor
ICAgIGlmIHByb2Nlc3MucmV0dXJuY29kZSAhPSAwOgorICAgICAgICByYWlzZSBFeGNlcHRpb24o
J2poYnVpbGQgY29uZmlndXJlIGZhaWxlZCB3aXRoIHJldHVybiBjb2RlOiAlaScgJSBwcm9jZXNz
LnJldHVybmNvZGUpCisKK2RlZiBkZXRlcm1pbmVfcGxhdGZvcm0oKToKKyAgICBpZiAnLS1lZmwn
IGluIHN5cy5hcmd2OgorICAgICAgICByZXR1cm4gImVmbCI7CisgICAgaWYgJy0tZ3RrJyBpbiBz
eXMuYXJndjoKKyAgICAgICAgcmV0dXJuICJndGsiOworICAgIHN5cy5leGl0KCJObyBwbGF0Zm9y
bSBzcGVjaWZpZWQgZm9yIHJ1bi13aXRoLWpoYnVpbGQuIikKKworZGVmIGVuc3VyZV9qaGJ1aWxk
KCk6CisgICAgaWYgbm90IGpoYnVpbGRfY2xvbmVkKCk6CisgICAgICAgIGNsb25lX2poYnVpbGQo
KQorICAgICAgICB1cGRhdGVfamhidWlsZCgpCisgICAgICAgIGluc3RhbGxfamhidWlsZCgpCisg
ICAgICAgIHVwZGF0ZV93ZWJraXRfbGlic19qaGJ1aWxkKCkKKyAgICBlbGlmIG5vdCBqaGJ1aWxk
X2luc3RhbGxlZCgpIFwKKyAgICAgICAgICAgIG9yIG5vdCBqaGJ1aWxkX2F0X2V4cGVjdGVkX3Jl
dmlzaW9uKCk6CisgICAgICAgIHVwZGF0ZV9qaGJ1aWxkKCkKKyAgICAgICAgaW5zdGFsbF9qaGJ1
aWxkKCkKKworCitwbGF0Zm9ybSA9IGRldGVybWluZV9wbGF0Zm9ybSgpCitlbnN1cmVfamhidWls
ZCgpCisKK3Byb2Nlc3MgPSBzdWJwcm9jZXNzLlBvcGVuKFtqaGJ1aWxkX3BhdGgsICctLW5vLWlu
dGVyYWN0JywgJy1mJywgdG9wX2xldmVsX3BhdGgoJ1Rvb2xzJywgcGxhdGZvcm0sICdqaGJ1aWxk
cmMnKSwgJ3J1biddICsgc3lzLmFyZ3ZbMjpdKQorcHJvY2Vzcy53YWl0KCkKK3N5cy5leGl0KHBy
b2Nlc3MucmV0dXJuY29kZSkKKwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>129242</attachid>
            <date>2012-02-28 07:09:47 -0800</date>
            <delta_ts>2012-03-14 08:04:54 -0700</delta_ts>
            <desc>Proposal for patching jhbuild related scripts, v3, script-wrappers.</desc>
            <filename>bug-79673-20120228170952.patch</filename>
            <type>text/plain</type>
            <size>14568</size>
            <attacher name="Dominik Röttsches (drott)">d-r</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA4OTkzCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZTUzYWFlY2I1NWQxZWU1MTQ4NzY0OTljZGJiN2IwZTg3
ODY5ODJmNy4uOThjZTBkMmIxMjk2ZTlhMWVjMDM4OWJhZGI3YTM1MzYyNjdkZWY4NyAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1
IEBACisyMDEyLTAyLTI4ICBEb21pbmlrIFLDtnR0c2NoZXMgIDxkb21pbmlrLnJvdHRzY2hlc0Bs
aW51eC5pbnRlbC5jb20+CisKKyAgICAgICAgUGFyYW1ldHJpemUgcnVuLXdpdGgtamhidWlsZCBh
bmQgdXBkYXRlLXdlYmtpdGd0ay1saWJzIHdpdGggcGxhdGZvcm0gLS1ndGsvLS1lZmwKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc5NjczCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTY3JpcHRzL3VwZGF0
ZS13ZWJraXQtbGlicy1qaGJ1aWxkOiBDb3BpZWQgZnJvbSBUb29scy9TY3JpcHRzL3VwZGF0ZS13
ZWJraXRndGstbGlicy4KKyAgICAgICAgKiBTY3JpcHRzL3VwZGF0ZS13ZWJraXRndGstbGliczoK
KyAgICAgICAgKiBndGsvcnVuLXdpdGgtamhidWlsZDoKKyAgICAgICAgKiBqaGJ1aWxkL2poYnVp
bGQtd3JhcHBlcjogQ29waWVkIGZyb20gVG9vbHMvZ3RrL3J1bi13aXRoLWpoYnVpbGQuCisgICAg
ICAgICh0b3BfbGV2ZWxfcGF0aCk6CisgICAgICAgIChqaGJ1aWxkX2luc3RhbGxlZCk6CisgICAg
ICAgIChqaGJ1aWxkX2Nsb25lZCk6CisgICAgICAgIChqaGJ1aWxkX2F0X2V4cGVjdGVkX3Jldmlz
aW9uKToKKyAgICAgICAgKHVwZGF0ZV9qaGJ1aWxkKToKKyAgICAgICAgKGNsb25lX2poYnVpbGQp
OgorICAgICAgICAoaW5zdGFsbF9qaGJ1aWxkKToKKyAgICAgICAgKHVwZGF0ZV93ZWJraXRfbGli
c19qaGJ1aWxkKToKKyAgICAgICAgKGRldGVybWluZV9wbGF0Zm9ybSk6CisgICAgICAgIChlbnN1
cmVfamhidWlsZCk6CisKIDIwMTItMDItMjcgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNp
YUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQuIEZpeCBtYWtlIGRpc3RjaGVjay4K
ZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvdXBkYXRlLXdlYmtpdC1saWJzLWpoYnVpbGQgYi9U
b29scy9TY3JpcHRzL3VwZGF0ZS13ZWJraXQtbGlicy1qaGJ1aWxkCm5ldyBmaWxlIG1vZGUgMTAw
NzU1CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc4ZmQ2
NDgwMjFmOWExNTJlOTIxNzVhZGRjYjUwOWU0NzdlMWE2NTYKLS0tIC9kZXYvbnVsbAorKysgYi9U
b29scy9TY3JpcHRzL3VwZGF0ZS13ZWJraXQtbGlicy1qaGJ1aWxkCkBAIC0wLDAgKzEsNjQgQEAK
KyMhL3Vzci9iaW4vcGVybCAtdworIyBDb3B5cmlnaHQgKEMpIDIwMTEgSWdhbGlhIFMuTC4KKyMg
Q29weXJpZ2h0IChDKSAyMDEyIEludGVsIENvcnBvcmF0aW9uCisjCisjIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyMgbW9kaWZ5
IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworIyBM
aWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo
ZXIKKyMgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBs
YXRlciB2ZXJzaW9uLgorIworIyBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv
cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3
aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyMgTUVSQ0hBTlRBQklMSVRZIG9y
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyMgTGVzc2Vy
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyMKKyMgWW91IHNob3Vs
ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwor
IyBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBG
cmVlIFNvZnR3YXJlCisjIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlm
dGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQorCit1c2UgRmluZEJpbjsKK3Vz
ZSBsaWIgJEZpbmRCaW46OkJpbjsKK3VzZSB3ZWJraXRkaXJzOwordXNlIEdldG9wdDo6TG9uZzsK
KworbXkgJHBsYXRmb3JtRWZsID0gMDsKK215ICRwbGF0Zm9ybUd0ayA9IDA7CisKK215ICRnZXRP
cHRpb25zUmVzdWx0ID0gR2V0T3B0aW9ucygKKyAgICAnZWZsJyA9PiBcJHBsYXRmb3JtRWZsLAor
ICAgICdndGsnID0+IFwkcGxhdGZvcm1HdGsKKyAgICApOworCitteSAkcGxhdGZvcm0gPSAiIjsK
K215ICRwcmV0dHlQbGF0Zm9ybSA9ICIiOworaWYgKCEkZ2V0T3B0aW9uc1Jlc3VsdCkgeworICAg
IHByaW50IFNUREVSUiAiTm8gcGxhdGZvcm0gc3BlY2lmaWVkIGZvciAiIC4gYmFzZW5hbWUoJDAp
IC4iLiBVc2UgLS1ndGsgb3IgLS1lZmwuIjsKKyAgICByZXR1cm4gMTsKK30gZWxzZSB7CisgICAg
aWYgKCRwbGF0Zm9ybUVmbCkgeworICAgICAgICAkcGxhdGZvcm0gPSAiZWZsIjsKKyAgICAgICAg
JHByZXR0eVBsYXRmb3JtID0gIkVGTCI7CisgICAgfQorICAgIGlmICgkcGxhdGZvcm1HdGspIHsK
KyAgICAgICAgJHBsYXRmb3JtID0gImd0ayI7CisgICAgICAgICRwcmV0dHlQbGF0Zm9ybSA9ICJH
VEsrIjsKKyAgICB9Cit9CisKK2RlbGV0ZSAkRU5We0FSX0ZMQUdTfSBpZiBleGlzdHMgJEVOVntB
Ul9GTEFHU307CisKK2NoZGlyKHJlbGF0aXZlU2NyaXB0c0RpcigpIC4gIi8uLi9qaGJ1aWxkIikg
b3IgZGllICQhOworCitteSBAZW5zdXJlSmhidWlsZEFyZ3MgPSAoIi4vamhidWlsZC13cmFwcGVy
IiwgIi0tIi4kcGxhdGZvcm0sICJlY2hvIiwgIkVuc3VyZWQgamhidWlsZCBzZXR1cC4iKTsKK2lm
IChzeXN0ZW0oQGVuc3VyZUpoYnVpbGRBcmdzKSAhPSAwKSB7CisgICAgZGllICJGYWlsZWQgdG8g
ZW5zdXJlIGpoYnVpbGQgaW5zdGFsbGVkLlxuIjsKK30KKworY2hkaXIocmVsYXRpdmVTY3JpcHRz
RGlyKCkgLiAiLy4uLyIuJHBsYXRmb3JtKSBvciBkaWUgJCE7CisKK3ByaW50ICJVcGRhdGluZyAi
IC4gJHByZXR0eVBsYXRmb3JtIC4gIiBwb3J0IGRlcGVuZGVuY2llcyB1c2luZyBqaGJ1aWxkLi4u
XG4iOworbXkgQGpoYnVpbGRBcmdzID0gKCIuLi8uLi9XZWJLaXRCdWlsZC9EZXBlbmRlbmNpZXMv
Um9vdC9iaW4vamhidWlsZCIsICItLW5vLWludGVyYWN0IiwgIi1mIiwgImpoYnVpbGRyYyIpOwor
cHVzaChAamhidWlsZEFyZ3MsIEBBUkdWWzIuLi0xXSk7CitpZiAoc3lzdGVtKEBqaGJ1aWxkQXJn
cykgIT0gMCkgeworICAgIGRpZSAiUnVubmluZyBqaGJ1aWxkIGZhaWxlZC5cbiIKK30KZGlmZiAt
LWdpdCBhL1Rvb2xzL1NjcmlwdHMvdXBkYXRlLXdlYmtpdGd0ay1saWJzIGIvVG9vbHMvU2NyaXB0
cy91cGRhdGUtd2Via2l0Z3RrLWxpYnMKaW5kZXggODAzM2M2MmViZjIyOWM3NWFiYjRiNTIxYTY3
YjMxNmNlYzQ0Yzc5NS4uZGI2YWMyY2I1ZDkzNjAzY2JkYjg0ODg2NWRhODIzOTQ4MTZkODMyNSAx
MDA3NTUKLS0tIGEvVG9vbHMvU2NyaXB0cy91cGRhdGUtd2Via2l0Z3RrLWxpYnMKKysrIGIvVG9v
bHMvU2NyaXB0cy91cGRhdGUtd2Via2l0Z3RrLWxpYnMKQEAgLTEsNSArMSw1IEBACiAjIS91c3Iv
YmluL3BlcmwgLXcKLSMgQ29weXJpZ2h0IChDKSAyMDExIElnYWxpYSBTLkwuCisjIENvcHlyaWdo
dCAoQykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlvbgogIwogIyBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAjIG1vZGlmeSBpdCB1bmRl
ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKQEAgLTE5LDE4ICsx
OSw1IEBAIHVzZSBGaW5kQmluOwogdXNlIGxpYiAkRmluZEJpbjo6QmluOwogdXNlIHdlYmtpdGRp
cnM7CiAKLWRlbGV0ZSAkRU5We0FSX0ZMQUdTfSBpZiBleGlzdHMgJEVOVntBUl9GTEFHU307Ci0K
LWNoZGlyKHJlbGF0aXZlU2NyaXB0c0RpcigpIC4gIi8uLi9ndGsiKSBvciBkaWUgJCE7Ci0KLW15
IEBlbnN1cmVKaGJ1aWxkQXJncyA9ICgiLi9ydW4td2l0aC1qaGJ1aWxkIiwgImVjaG8iLCAiRW5z
dXJlZCBqaGJ1aWxkIHNldHVwLiIpOwotaWYgKHN5c3RlbShAZW5zdXJlSmhidWlsZEFyZ3MpICE9
IDApIHsKLSAgICBkaWUgIkZhaWxlZCB0byBlbnN1cmUgamhidWlsZCBpbnN0YWxsZWQuXG4iOwot
fQotCi1wcmludCAiVXBkYXRpbmcgR1RLKyBwb3J0IGRlcGVuZGVuY2llcyB1c2luZyBqaGJ1aWxk
Li4uXG4iOwotbXkgQGpoYnVpbGRBcmdzID0gKCIuLi8uLi9XZWJLaXRCdWlsZC9EZXBlbmRlbmNp
ZXMvUm9vdC9iaW4vamhidWlsZCIsICItLW5vLWludGVyYWN0IiwgIi1mIiwgImpoYnVpbGRyYyIp
OwotcHVzaChAamhidWlsZEFyZ3MsIEBBUkdWWzEuLi0xXSk7Ci1pZiAoc3lzdGVtKEBqaGJ1aWxk
QXJncykgIT0gMCkgewotICAgIGRpZSAiUnVubmluZyBqaGJ1aWxkIGZhaWxlZC5cbiIKLX0KK215
ICRzY3JpcHRzRGlyID0gcmVsYXRpdmVTY3JpcHRzRGlyKCk7CitzeXN0ZW0oInBlcmwiLCAiJHNj
cmlwdHNEaXIvdXBkYXRlLXdlYmtpdC1saWJzLWpoYnVpbGQiLCAiLS1ndGsiLCBzeXMuYXJndikg
PT0gMCBvciBkaWUgJCE7CmRpZmYgLS1naXQgYS9Ub29scy9ndGsvcnVuLXdpdGgtamhidWlsZCBi
L1Rvb2xzL2d0ay9ydW4td2l0aC1qaGJ1aWxkCmluZGV4IDVmODhlZDA1MzFiNmUwMTQ1YzMyZjYz
NzRkNGIxOTdjNWU0M2I1ZTEuLjU2MGU3MmI2ODc2ODgwNGVlZDQ4NDEwNGJlYjI3YWY3YTllNTFm
MzEgMTAwNzU1Ci0tLSBhL1Rvb2xzL2d0ay9ydW4td2l0aC1qaGJ1aWxkCisrKyBiL1Rvb2xzL2d0
ay9ydW4td2l0aC1qaGJ1aWxkCkBAIC0xLDYgKzEsNSBAQAogIyEvdXNyL2Jpbi9lbnYgcHl0aG9u
Ci0jIENvcHlyaWdodCAoQykgMjAxMSBJZ2FsaWEgUy5MLgotIyBDb3B5cmlnaHQgKEMpIDIwMTIg
R3VzdGF2byBOb3JvbmhhIFNpbHZhIDxnbnNAZ25vbWUub3JnPgorIyBDb3B5cmlnaHQgKEMpIDIw
MTIgSW50ZWwgQ29ycG9yYXRpb24KICMKICMgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7
IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogIyBtb2RpZnkgaXQgdW5kZXIgdGhlIHRl
cm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCkBAIC0xNywxMDYgKzE2LDEwIEBA
CiAjIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJv
c3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQogCiBpbXBvcnQgY29tbW9uCi1pbXBvcnQgb3MKIGlt
cG9ydCBzdWJwcm9jZXNzCiBpbXBvcnQgc3lzCiAKLQotamhidWlsZF9yZXZpc2lvbiA9ICcxZWVk
YzQyM2Y3NWM2MDUyMjRiNDMwNTc5ZTRjMzAzMjkyMTk5NTA3JwotCi1pbnN0YWxsYXRpb25fcHJl
Zml4ID0gb3MucGF0aC5hYnNwYXRoKGNvbW1vbi50b3BfbGV2ZWxfcGF0aCgnV2ViS2l0QnVpbGQn
LCAnRGVwZW5kZW5jaWVzJywgJ1Jvb3QnKSkKLXNvdXJjZV9wYXRoID0gb3MucGF0aC5hYnNwYXRo
KGNvbW1vbi50b3BfbGV2ZWxfcGF0aCgnV2ViS2l0QnVpbGQnLCAnRGVwZW5kZW5jaWVzJywgJ1Nv
dXJjZScpKQotamhidWlsZF9zb3VyY2VfcGF0aCA9IG9zLnBhdGguam9pbihzb3VyY2VfcGF0aCwg
J2poYnVpbGQnKQotamhidWlsZF9wYXRoID0gY29tbW9uLnRvcF9sZXZlbF9wYXRoKCdXZWJLaXRC
dWlsZCcsICdEZXBlbmRlbmNpZXMnLCAnUm9vdCcsICdiaW4nLCAnamhidWlsZCcpCi0KLQotZGVm
IGpoYnVpbGRfaW5zdGFsbGVkKCk6Ci0gICAgcmV0dXJuIG9zLnBhdGguZXhpc3RzKGpoYnVpbGRf
cGF0aCkKLQotCi1kZWYgamhidWlsZF9jbG9uZWQoKToKLSAgICByZXR1cm4gb3MucGF0aC5leGlz
dHMoamhidWlsZF9zb3VyY2VfcGF0aCkKLQotCi1kZWYgamhidWlsZF9hdF9leHBlY3RlZF9yZXZp
c2lvbigpOgotICAgIHByb2Nlc3MgPSBzdWJwcm9jZXNzLlBvcGVuKFsnZ2l0JywgJ3Jldi1saXN0
JywgJ0hFQUReLi4nXSwgY3dkPWpoYnVpbGRfc291cmNlX3BhdGgsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSwgc3RkZXJyPXN1YnByb2Nlc3Mu
UElQRSkKLSAgICBvdXRwdXQsIGVyciA9IHByb2Nlc3MuY29tbXVuaWNhdGUoKQotICAgIGlmIHBy
b2Nlc3MucmV0dXJuY29kZSAhPSAwOgotICAgICAgICByYWlzZSBFeGNlcHRpb24oJ2ZhaWxlZCB0
byBmaW5kIGpoYnVpbGQgcmV2aXNpb246ICVzJyAlIGVycikKLQotICAgIHJldHVybiBvdXRwdXQu
c3RyaXAoKSA9PSBqaGJ1aWxkX3JldmlzaW9uCi0KLQotZGVmIHVwZGF0ZV9qaGJ1aWxkKCk6Ci0g
ICAgcHJvY2VzcyA9IHN1YnByb2Nlc3MuUG9wZW4oWydnaXQnLCAncmVtb3RlJywgJ3VwZGF0ZScs
ICdvcmlnaW4nXSwgY3dkPWpoYnVpbGRfc291cmNlX3BhdGgpCi0gICAgcHJvY2Vzcy53YWl0KCkK
LSAgICBpZiBwcm9jZXNzLnJldHVybmNvZGUgIT0gMDoKLSAgICAgICAgcmFpc2UgRXhjZXB0aW9u
KCdqaGJ1aWxkIHJlbW90ZSB1cGRhdGUgb3JpZ2luIGZhaWxlZCB3aXRoIHJldHVybiBjb2RlOiAl
aScgJSBwcm9jZXNzLnJldHVybmNvZGUpCi0KLSAgICBwcm9jZXNzID0gc3VicHJvY2Vzcy5Qb3Bl
bihbJ2dpdCcsICdjaGVja291dCcsICclcycgJSBqaGJ1aWxkX3JldmlzaW9uXSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjd2Q9amhidWlsZF9zb3VyY2VfcGF0aCkKLSAgICBwcm9j
ZXNzLndhaXQoKQotICAgIGlmIHByb2Nlc3MucmV0dXJuY29kZSAhPSAwOgotICAgICAgICByYWlz
ZSBFeGNlcHRpb24oJ2ZhaWxlZCB0byBjaGVja291dCB0cmVlaXNoICVzOiAlaScgJSAoamhidWls
ZF9yZXZpc2lvbiwgcHJvY2Vzcy5yZXR1cm5jb2RlKSkKLQotCi1kZWYgY2xvbmVfamhidWlsZCgp
OgotICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhzb3VyY2VfcGF0aCk6Ci0gICAgICAgIG9zLm1h
a2VkaXJzKHNvdXJjZV9wYXRoKQotICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhpbnN0YWxsYXRp
b25fcHJlZml4KToKLSAgICAgICAgb3MubWFrZWRpcnMoaW5zdGFsbGF0aW9uX3ByZWZpeCkKLQot
ICAgIHByb2Nlc3MgPSBzdWJwcm9jZXNzLlBvcGVuKFsnZ2l0JywgJ2Nsb25lJywgJ2dpdDovL2dp
dC5nbm9tZS5vcmcvamhidWlsZCddLCBjd2Q9c291cmNlX3BhdGgpCi0gICAgcHJvY2Vzcy53YWl0
KCkKLSAgICBpZiBwcm9jZXNzLnJldHVybmNvZGUgIT0gMDoKLSAgICAgICAgcmFpc2UgRXhjZXB0
aW9uKCdqaGJ1aWxkIGdpdCBjbG9uZSBmYWlsZWQgd2l0aCByZXR1cm4gY29kZTogJWknICUgcHJv
Y2Vzcy5yZXR1cm5jb2RlKQotCi0KLWRlZiBpbnN0YWxsX2poYnVpbGQoKToKLSAgICAjIGpoYnVp
bGQgaXMgcmVhbGx5IHVuaGFwcHkgYWJvdXQgaGF2aW5nIE1BS0UgZGVmaW5lZCB0byBzb21ldGhp
bmcgbGlrZSAnbWFrZSAtajQnCi0gICAgIyBzbyB3ZSBqdXN0IHVuZGVmaW5lIGl0IGhlcmUuCi0g
ICAgZW52X3dpdGhvdXRfbWFrZSA9IGRpY3Qob3MuZW52aXJvbikKLSAgICBpZiAnTUFLRScgaW4g
ZW52X3dpdGhvdXRfbWFrZToKLSAgICAgICAgZGVsIGVudl93aXRob3V0X21ha2VbJ01BS0UnXQot
Ci0gICAgcHJvY2VzcyA9IHN1YnByb2Nlc3MuUG9wZW4oWycuL2F1dG9nZW4uc2gnLCAnLS1wcmVm
aXg9JXMnICUgaW5zdGFsbGF0aW9uX3ByZWZpeF0sCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY3dkPWpoYnVpbGRfc291cmNlX3BhdGgsIGVudj1lbnZfd2l0aG91dF9tYWtlKQotICAg
IHByb2Nlc3Mud2FpdCgpCi0gICAgaWYgcHJvY2Vzcy5yZXR1cm5jb2RlICE9IDA6Ci0gICAgICAg
IHJhaXNlIEV4Y2VwdGlvbignamhidWlsZCBjb25maWd1cmUgZmFpbGVkIHdpdGggcmV0dXJuIGNv
ZGU6ICVpJyAlIHByb2Nlc3MucmV0dXJuY29kZSkKLQotICAgIHByb2Nlc3MgPSBzdWJwcm9jZXNz
LlBvcGVuKFsnbWFrZScsICdpbnN0YWxsJ10sIGN3ZD1qaGJ1aWxkX3NvdXJjZV9wYXRoLCBlbnY9
ZW52X3dpdGhvdXRfbWFrZSkKLSAgICBwcm9jZXNzLndhaXQoKQotICAgIGlmIHByb2Nlc3MucmV0
dXJuY29kZSAhPSAwOgotICAgICAgICByYWlzZSBFeGNlcHRpb24oJ2poYnVpbGQgY29uZmlndXJl
IGZhaWxlZCB3aXRoIHJldHVybiBjb2RlOiAlaScgJSBwcm9jZXNzLnJldHVybmNvZGUpCi0KLQot
ZGVmIHVwZGF0ZV93ZWJraXRndGtfbGlicygpOgotICAgIHByb2Nlc3MgPSBzdWJwcm9jZXNzLlBv
cGVuKGNvbW1vbi50b3BfbGV2ZWxfcGF0aCgnVG9vbHMnLCAnU2NyaXB0cycsICd1cGRhdGUtd2Vi
a2l0Z3RrLWxpYnMnKSkKLSAgICBwcm9jZXNzLndhaXQoKQotICAgIGlmIHByb2Nlc3MucmV0dXJu
Y29kZSAhPSAwOgotICAgICAgICByYWlzZSBFeGNlcHRpb24oJ2poYnVpbGQgY29uZmlndXJlIGZh
aWxlZCB3aXRoIHJldHVybiBjb2RlOiAlaScgJSBwcm9jZXNzLnJldHVybmNvZGUpCi0KLQotZGVm
IGVuc3VyZV9qaGJ1aWxkKCk6Ci0gICAgaWYgbm90IGpoYnVpbGRfY2xvbmVkKCk6Ci0gICAgICAg
IGNsb25lX2poYnVpbGQoKQotICAgICAgICB1cGRhdGVfamhidWlsZCgpCi0gICAgICAgIGluc3Rh
bGxfamhidWlsZCgpCi0gICAgICAgIHVwZGF0ZV93ZWJraXRndGtfbGlicygpCi0gICAgZWxpZiBu
b3QgamhidWlsZF9pbnN0YWxsZWQoKSBcCi0gICAgICAgICAgICBvciBub3QgamhidWlsZF9hdF9l
eHBlY3RlZF9yZXZpc2lvbigpOgotICAgICAgICB1cGRhdGVfamhidWlsZCgpCi0gICAgICAgIGlu
c3RhbGxfamhidWlsZCgpCi0KLQotZW5zdXJlX2poYnVpbGQoKQotCi0KLXByb2Nlc3MgPSBzdWJw
cm9jZXNzLlBvcGVuKFtqaGJ1aWxkX3BhdGgsICctLW5vLWludGVyYWN0JywgJy1mJywgY29tbW9u
LnRvcF9sZXZlbF9wYXRoKCdUb29scycsICdndGsnLCAnamhidWlsZHJjJyksICdydW4nXSArIHN5
cy5hcmd2WzE6XSkKK2poYnVpbGRfd3JhcHBlciA9IGNvbW1vbi50b3BfbGV2ZWxfcGF0aCgnVG9v
bHMnLCAnamhidWlsZCcsICdqaGJ1aWxkLXdyYXBwZXInKQorcHJvY2VzcyA9IHN1YnByb2Nlc3Mu
UG9wZW4oW2poYnVpbGRfd3JhcHBlciwgJy0tZ3RrJ10gKyBzeXMuYXJndlsxOl0pCiBwcm9jZXNz
LndhaXQoKQogc3lzLmV4aXQocHJvY2Vzcy5yZXR1cm5jb2RlKQotCi0KLQpkaWZmIC0tZ2l0IGEv
VG9vbHMvamhidWlsZC9qaGJ1aWxkLXdyYXBwZXIgYi9Ub29scy9qaGJ1aWxkL2poYnVpbGQtd3Jh
cHBlcgpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4zZDcyNzAyZTQwZmE1ZTkxNmU5MWVkY2RmNmNmZTNhN2I1MWU5ODEy
Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvamhidWlsZC9qaGJ1aWxkLXdyYXBwZXIKQEAgLTAs
MCArMSwxMzIgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgorIyBDb3B5cmlnaHQgKEMpIDIwMTEg
SWdhbGlhIFMuTC4KKyMgQ29weXJpZ2h0IChDKSAyMDEyIEd1c3Rhdm8gTm9yb25oYSBTaWx2YSA8
Z25zQGdub21lLm9yZz4KKyMgQ29weXJpZ2h0IChDKSAyMDEyIEludGVsIENvcnBvcmF0aW9uCisj
CisjIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp
dCBhbmQvb3IKKyMgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBH
ZW5lcmFsIFB1YmxpYworIyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyMgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQg
eW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorIworIyBUaGlzIGxpYnJhcnkgaXMgZGlz
dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyMgYnV0IFdJVEhP
VVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyMg
TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl
IHRoZSBHTlUKKyMgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWls
cy4KKyMKKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3Nl
ciBHZW5lcmFsIFB1YmxpYworIyBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBu
b3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisjIEZvdW5kYXRpb24sIEluYy4sIDUxIEZy
YW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQor
CitpbXBvcnQgb3MKK2ltcG9ydCBzdWJwcm9jZXNzCitpbXBvcnQgc3lzCisKK3RvcF9sZXZlbF9k
aXIgPSBOb25lCisKK2RlZiB0b3BfbGV2ZWxfcGF0aCgqYXJncyk6CisgICAgZ2xvYmFsIHRvcF9s
ZXZlbF9kaXIKKyAgICBpZiBub3QgdG9wX2xldmVsX2RpcjoKKyAgICAgICAgdG9wX2xldmVsX2Rp
ciA9IG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pLCAnLi4nLCAnLi4nKQor
ICAgIHJldHVybiBvcy5wYXRoLmpvaW4oKih0b3BfbGV2ZWxfZGlyLCkgKyBhcmdzKQorCitqaGJ1
aWxkX3JldmlzaW9uID0gJzFlZWRjNDIzZjc1YzYwNTIyNGI0MzA1NzllNGMzMDMyOTIxOTk1MDcn
CisKK2luc3RhbGxhdGlvbl9wcmVmaXggPSBvcy5wYXRoLmFic3BhdGgodG9wX2xldmVsX3BhdGgo
J1dlYktpdEJ1aWxkJywgJ0RlcGVuZGVuY2llcycsICdSb290JykpCitzb3VyY2VfcGF0aCA9IG9z
LnBhdGguYWJzcGF0aCh0b3BfbGV2ZWxfcGF0aCgnV2ViS2l0QnVpbGQnLCAnRGVwZW5kZW5jaWVz
JywgJ1NvdXJjZScpKQoramhidWlsZF9zb3VyY2VfcGF0aCA9IG9zLnBhdGguam9pbihzb3VyY2Vf
cGF0aCwgJ2poYnVpbGQnKQoramhidWlsZF9wYXRoID0gdG9wX2xldmVsX3BhdGgoJ1dlYktpdEJ1
aWxkJywgJ0RlcGVuZGVuY2llcycsICdSb290JywgJ2JpbicsICdqaGJ1aWxkJykKK3BsYXRmb3Jt
ID0gTm9uZTsKKworZGVmIGpoYnVpbGRfaW5zdGFsbGVkKCk6CisgICAgcmV0dXJuIG9zLnBhdGgu
ZXhpc3RzKGpoYnVpbGRfcGF0aCkKKworCitkZWYgamhidWlsZF9jbG9uZWQoKToKKyAgICByZXR1
cm4gb3MucGF0aC5leGlzdHMoamhidWlsZF9zb3VyY2VfcGF0aCkKKworCitkZWYgamhidWlsZF9h
dF9leHBlY3RlZF9yZXZpc2lvbigpOgorICAgIHByb2Nlc3MgPSBzdWJwcm9jZXNzLlBvcGVuKFsn
Z2l0JywgJ3Jldi1saXN0JywgJ0hFQUReLi4nXSwgY3dkPWpoYnVpbGRfc291cmNlX3BhdGgsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSwgc3Rk
ZXJyPXN1YnByb2Nlc3MuUElQRSkKKyAgICBvdXRwdXQsIGVyciA9IHByb2Nlc3MuY29tbXVuaWNh
dGUoKQorICAgIGlmIHByb2Nlc3MucmV0dXJuY29kZSAhPSAwOgorICAgICAgICByYWlzZSBFeGNl
cHRpb24oJ2ZhaWxlZCB0byBmaW5kIGpoYnVpbGQgcmV2aXNpb246ICVzJyAlIGVycikKKworICAg
IHJldHVybiBvdXRwdXQuc3RyaXAoKSA9PSBqaGJ1aWxkX3JldmlzaW9uCisKKworZGVmIHVwZGF0
ZV9qaGJ1aWxkKCk6CisgICAgcHJvY2VzcyA9IHN1YnByb2Nlc3MuUG9wZW4oWydnaXQnLCAncmVt
b3RlJywgJ3VwZGF0ZScsICdvcmlnaW4nXSwgY3dkPWpoYnVpbGRfc291cmNlX3BhdGgpCisgICAg
cHJvY2Vzcy53YWl0KCkKKyAgICBpZiBwcm9jZXNzLnJldHVybmNvZGUgIT0gMDoKKyAgICAgICAg
cmFpc2UgRXhjZXB0aW9uKCdqaGJ1aWxkIHJlbW90ZSB1cGRhdGUgb3JpZ2luIGZhaWxlZCB3aXRo
IHJldHVybiBjb2RlOiAlaScgJSBwcm9jZXNzLnJldHVybmNvZGUpCisKKyAgICBwcm9jZXNzID0g
c3VicHJvY2Vzcy5Qb3BlbihbJ2dpdCcsICdjaGVja291dCcsICclcycgJSBqaGJ1aWxkX3Jldmlz
aW9uXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjd2Q9amhidWlsZF9zb3VyY2Vf
cGF0aCkKKyAgICBwcm9jZXNzLndhaXQoKQorICAgIGlmIHByb2Nlc3MucmV0dXJuY29kZSAhPSAw
OgorICAgICAgICByYWlzZSBFeGNlcHRpb24oJ2ZhaWxlZCB0byBjaGVja291dCB0cmVlaXNoICVz
OiAlaScgJSAoamhidWlsZF9yZXZpc2lvbiwgcHJvY2Vzcy5yZXR1cm5jb2RlKSkKKworCitkZWYg
Y2xvbmVfamhidWlsZCgpOgorICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhzb3VyY2VfcGF0aCk6
CisgICAgICAgIG9zLm1ha2VkaXJzKHNvdXJjZV9wYXRoKQorICAgIGlmIG5vdCBvcy5wYXRoLmV4
aXN0cyhpbnN0YWxsYXRpb25fcHJlZml4KToKKyAgICAgICAgb3MubWFrZWRpcnMoaW5zdGFsbGF0
aW9uX3ByZWZpeCkKKworICAgIHByb2Nlc3MgPSBzdWJwcm9jZXNzLlBvcGVuKFsnZ2l0JywgJ2Ns
b25lJywgJ2dpdDovL2dpdC5nbm9tZS5vcmcvamhidWlsZCddLCBjd2Q9c291cmNlX3BhdGgpCisg
ICAgcHJvY2Vzcy53YWl0KCkKKyAgICBpZiBwcm9jZXNzLnJldHVybmNvZGUgIT0gMDoKKyAgICAg
ICAgcmFpc2UgRXhjZXB0aW9uKCdqaGJ1aWxkIGdpdCBjbG9uZSBmYWlsZWQgd2l0aCByZXR1cm4g
Y29kZTogJWknICUgcHJvY2Vzcy5yZXR1cm5jb2RlKQorCisKK2RlZiBpbnN0YWxsX2poYnVpbGQo
KToKKyAgICAjIGpoYnVpbGQgaXMgcmVhbGx5IHVuaGFwcHkgYWJvdXQgaGF2aW5nIE1BS0UgZGVm
aW5lZCB0byBzb21ldGhpbmcgbGlrZSAnbWFrZSAtajQnCisgICAgIyBzbyB3ZSBqdXN0IHVuZGVm
aW5lIGl0IGhlcmUuCisgICAgZW52X3dpdGhvdXRfbWFrZSA9IGRpY3Qob3MuZW52aXJvbikKKyAg
ICBpZiAnTUFLRScgaW4gZW52X3dpdGhvdXRfbWFrZToKKyAgICAgICAgZGVsIGVudl93aXRob3V0
X21ha2VbJ01BS0UnXQorCisgICAgcHJvY2VzcyA9IHN1YnByb2Nlc3MuUG9wZW4oWycuL2F1dG9n
ZW4uc2gnLCAnLS1wcmVmaXg9JXMnICUgaW5zdGFsbGF0aW9uX3ByZWZpeF0sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY3dkPWpoYnVpbGRfc291cmNlX3BhdGgsIGVudj1lbnZfd2l0
aG91dF9tYWtlKQorICAgIHByb2Nlc3Mud2FpdCgpCisgICAgaWYgcHJvY2Vzcy5yZXR1cm5jb2Rl
ICE9IDA6CisgICAgICAgIHJhaXNlIEV4Y2VwdGlvbignamhidWlsZCBjb25maWd1cmUgZmFpbGVk
IHdpdGggcmV0dXJuIGNvZGU6ICVpJyAlIHByb2Nlc3MucmV0dXJuY29kZSkKKworICAgIHByb2Nl
c3MgPSBzdWJwcm9jZXNzLlBvcGVuKFsnbWFrZScsICdpbnN0YWxsJ10sIGN3ZD1qaGJ1aWxkX3Nv
dXJjZV9wYXRoLCBlbnY9ZW52X3dpdGhvdXRfbWFrZSkKKyAgICBwcm9jZXNzLndhaXQoKQorICAg
IGlmIHByb2Nlc3MucmV0dXJuY29kZSAhPSAwOgorICAgICAgICByYWlzZSBFeGNlcHRpb24oJ2po
YnVpbGQgY29uZmlndXJlIGZhaWxlZCB3aXRoIHJldHVybiBjb2RlOiAlaScgJSBwcm9jZXNzLnJl
dHVybmNvZGUpCisKKworZGVmIHVwZGF0ZV93ZWJraXRfbGlic19qaGJ1aWxkKCk6CisgICAgcHJv
Y2VzcyA9IHN1YnByb2Nlc3MuUG9wZW4oW3RvcF9sZXZlbF9wYXRoKCdUb29scycsICdTY3JpcHRz
JywgJ3VwZGF0ZS13ZWJraXQtbGlicy1qaGJ1aWxkJyksICctLScgKyBwbGF0Zm9ybV0pCisgICAg
cHJvY2Vzcy53YWl0KCkKKyAgICBpZiBwcm9jZXNzLnJldHVybmNvZGUgIT0gMDoKKyAgICAgICAg
cmFpc2UgRXhjZXB0aW9uKCdqaGJ1aWxkIGNvbmZpZ3VyZSBmYWlsZWQgd2l0aCByZXR1cm4gY29k
ZTogJWknICUgcHJvY2Vzcy5yZXR1cm5jb2RlKQorCitkZWYgZGV0ZXJtaW5lX3BsYXRmb3JtKCk6
CisgICAgaWYgJy0tZWZsJyBpbiBzeXMuYXJndjoKKyAgICAgICAgcmV0dXJuICJlZmwiOworICAg
IGlmICctLWd0aycgaW4gc3lzLmFyZ3Y6CisgICAgICAgIHJldHVybiAiZ3RrIjsKKyAgICBzeXMu
ZXhpdCgiTm8gcGxhdGZvcm0gc3BlY2lmaWVkIGZvciBqaGJ1aWxkLXdyYXBwZXIuIikKKworZGVm
IGVuc3VyZV9qaGJ1aWxkKCk6CisgICAgaWYgbm90IGpoYnVpbGRfY2xvbmVkKCk6CisgICAgICAg
IGNsb25lX2poYnVpbGQoKQorICAgICAgICB1cGRhdGVfamhidWlsZCgpCisgICAgICAgIGluc3Rh
bGxfamhidWlsZCgpCisgICAgICAgIHVwZGF0ZV93ZWJraXRfbGlic19qaGJ1aWxkKCkKKyAgICBl
bGlmIG5vdCBqaGJ1aWxkX2luc3RhbGxlZCgpIFwKKyAgICAgICAgICAgIG9yIG5vdCBqaGJ1aWxk
X2F0X2V4cGVjdGVkX3JldmlzaW9uKCk6CisgICAgICAgIHVwZGF0ZV9qaGJ1aWxkKCkKKyAgICAg
ICAgaW5zdGFsbF9qaGJ1aWxkKCkKKworCitwbGF0Zm9ybSA9IGRldGVybWluZV9wbGF0Zm9ybSgp
CitlbnN1cmVfamhidWlsZCgpCisKK3Byb2Nlc3MgPSBzdWJwcm9jZXNzLlBvcGVuKFtqaGJ1aWxk
X3BhdGgsICctLW5vLWludGVyYWN0JywgJy1mJywgdG9wX2xldmVsX3BhdGgoJ1Rvb2xzJywgcGxh
dGZvcm0sICdqaGJ1aWxkcmMnKSwgJ3J1biddICsgc3lzLmFyZ3ZbMjpdKQorcHJvY2Vzcy53YWl0
KCkKK3N5cy5leGl0KHByb2Nlc3MucmV0dXJuY29kZSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>131848</attachid>
            <date>2012-03-14 08:04:54 -0700</date>
            <delta_ts>2012-03-15 02:57:04 -0700</delta_ts>
            <desc>Proposal for patching jhbuild related scripts, v4</desc>
            <filename>bug79673_v4.patch</filename>
            <type>text/plain</type>
            <size>14316</size>
            <attacher name="Dominik Röttsches (drott)">d-r</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA5NThj
NDRhLi5iYzRkZDcyIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjcgQEAKKzIwMTItMDMtMTQgIERvbWluaWsgUsO2dHRzY2hlcyAg
PGRvbWluaWsucm90dHNjaGVzQGxpbnV4LmludGVsLmNvbT4KKworICAgICAgICBQYXJhbWV0cml6
ZSBydW4td2l0aC1qaGJ1aWxkIGFuZCB1cGRhdGUtd2Via2l0Z3RrLWxpYnMgd2l0aCBwbGF0Zm9y
bSAtLWd0ay8tLWVmbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9Nzk2NzMKKworICAgICAgICBQcmVwYXJhdG9yeSB3b3JrIGZvciBicmluZ2luZyBqaGJ1
aWxkIGVuYWJsZWQgYnVpbGQgdG8gRUZMIHBvcnQuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTY3JpcHRzL3VwZGF0ZS13ZWJraXQtbGlicy1qaGJ1
aWxkOiBDb3BpZWQgZnJvbSBUb29scy9TY3JpcHRzL3VwZGF0ZS13ZWJraXRndGstbGlicy4KKyAg
ICAgICAgKiBTY3JpcHRzL3VwZGF0ZS13ZWJraXRndGstbGliczoKKyAgICAgICAgKiBndGsvcnVu
LXdpdGgtamhidWlsZDoKKyAgICAgICAgKiBqaGJ1aWxkL2poYnVpbGQtd3JhcHBlcjogQ29waWVk
IGZyb20gVG9vbHMvZ3RrL3J1bi13aXRoLWpoYnVpbGQuCisgICAgICAgICh0b3BfbGV2ZWxfcGF0
aCk6CisgICAgICAgIChqaGJ1aWxkX2luc3RhbGxlZCk6CisgICAgICAgIChqaGJ1aWxkX2Nsb25l
ZCk6CisgICAgICAgIChqaGJ1aWxkX2F0X2V4cGVjdGVkX3JldmlzaW9uKToKKyAgICAgICAgKHVw
ZGF0ZV9qaGJ1aWxkKToKKyAgICAgICAgKGNsb25lX2poYnVpbGQpOgorICAgICAgICAoaW5zdGFs
bF9qaGJ1aWxkKToKKyAgICAgICAgKHVwZGF0ZV93ZWJraXRfbGlic19qaGJ1aWxkKToKKyAgICAg
ICAgKGRldGVybWluZV9wbGF0Zm9ybSk6CisgICAgICAgIChlbnN1cmVfamhidWlsZCk6CisKIDIw
MTItMDMtMTMgIFRoaWFnbyBNYXJjb3MgUC4gU2FudG9zICA8dGhpYWdvLnNhbnRvc0BpbnRlbC5j
b20+CiAKICAgICAgICAgW0VGTF1bRFJUXSBFeHBvc2Ugd2luZG93LmludGVybmFscyBvYmplY3QK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvdXBkYXRlLXdlYmtpdC1saWJzLWpoYnVpbGQgYi9U
b29scy9TY3JpcHRzL3VwZGF0ZS13ZWJraXQtbGlicy1qaGJ1aWxkCm5ldyBmaWxlIG1vZGUgMTAw
NzU1CmluZGV4IDAwMDAwMDAuLjc4ZmQ2NDgKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9TY3Jp
cHRzL3VwZGF0ZS13ZWJraXQtbGlicy1qaGJ1aWxkCkBAIC0wLDAgKzEsNjQgQEAKKyMhL3Vzci9i
aW4vcGVybCAtdworIyBDb3B5cmlnaHQgKEMpIDIwMTEgSWdhbGlhIFMuTC4KKyMgQ29weXJpZ2h0
IChDKSAyMDEyIEludGVsIENvcnBvcmF0aW9uCisjCisjIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNv
ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyMgbW9kaWZ5IGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworIyBMaWNlbnNlIGFz
IHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyMgdmVy
c2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJz
aW9uLgorIworIyBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp
dCB3aWxsIGJlIHVzZWZ1bCwKKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2
ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyMgTGVzc2VyIEdlbmVyYWwg
UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyMKKyMgWW91IHNob3VsZCBoYXZlIHJl
Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworIyBMaWNlbnNl
IGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3
YXJlCisjIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3Is
IEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQorCit1c2UgRmluZEJpbjsKK3VzZSBsaWIgJEZp
bmRCaW46OkJpbjsKK3VzZSB3ZWJraXRkaXJzOwordXNlIEdldG9wdDo6TG9uZzsKKworbXkgJHBs
YXRmb3JtRWZsID0gMDsKK215ICRwbGF0Zm9ybUd0ayA9IDA7CisKK215ICRnZXRPcHRpb25zUmVz
dWx0ID0gR2V0T3B0aW9ucygKKyAgICAnZWZsJyA9PiBcJHBsYXRmb3JtRWZsLAorICAgICdndGsn
ID0+IFwkcGxhdGZvcm1HdGsKKyAgICApOworCitteSAkcGxhdGZvcm0gPSAiIjsKK215ICRwcmV0
dHlQbGF0Zm9ybSA9ICIiOworaWYgKCEkZ2V0T3B0aW9uc1Jlc3VsdCkgeworICAgIHByaW50IFNU
REVSUiAiTm8gcGxhdGZvcm0gc3BlY2lmaWVkIGZvciAiIC4gYmFzZW5hbWUoJDApIC4iLiBVc2Ug
LS1ndGsgb3IgLS1lZmwuIjsKKyAgICByZXR1cm4gMTsKK30gZWxzZSB7CisgICAgaWYgKCRwbGF0
Zm9ybUVmbCkgeworICAgICAgICAkcGxhdGZvcm0gPSAiZWZsIjsKKyAgICAgICAgJHByZXR0eVBs
YXRmb3JtID0gIkVGTCI7CisgICAgfQorICAgIGlmICgkcGxhdGZvcm1HdGspIHsKKyAgICAgICAg
JHBsYXRmb3JtID0gImd0ayI7CisgICAgICAgICRwcmV0dHlQbGF0Zm9ybSA9ICJHVEsrIjsKKyAg
ICB9Cit9CisKK2RlbGV0ZSAkRU5We0FSX0ZMQUdTfSBpZiBleGlzdHMgJEVOVntBUl9GTEFHU307
CisKK2NoZGlyKHJlbGF0aXZlU2NyaXB0c0RpcigpIC4gIi8uLi9qaGJ1aWxkIikgb3IgZGllICQh
OworCitteSBAZW5zdXJlSmhidWlsZEFyZ3MgPSAoIi4vamhidWlsZC13cmFwcGVyIiwgIi0tIi4k
cGxhdGZvcm0sICJlY2hvIiwgIkVuc3VyZWQgamhidWlsZCBzZXR1cC4iKTsKK2lmIChzeXN0ZW0o
QGVuc3VyZUpoYnVpbGRBcmdzKSAhPSAwKSB7CisgICAgZGllICJGYWlsZWQgdG8gZW5zdXJlIGpo
YnVpbGQgaW5zdGFsbGVkLlxuIjsKK30KKworY2hkaXIocmVsYXRpdmVTY3JpcHRzRGlyKCkgLiAi
Ly4uLyIuJHBsYXRmb3JtKSBvciBkaWUgJCE7CisKK3ByaW50ICJVcGRhdGluZyAiIC4gJHByZXR0
eVBsYXRmb3JtIC4gIiBwb3J0IGRlcGVuZGVuY2llcyB1c2luZyBqaGJ1aWxkLi4uXG4iOworbXkg
QGpoYnVpbGRBcmdzID0gKCIuLi8uLi9XZWJLaXRCdWlsZC9EZXBlbmRlbmNpZXMvUm9vdC9iaW4v
amhidWlsZCIsICItLW5vLWludGVyYWN0IiwgIi1mIiwgImpoYnVpbGRyYyIpOworcHVzaChAamhi
dWlsZEFyZ3MsIEBBUkdWWzIuLi0xXSk7CitpZiAoc3lzdGVtKEBqaGJ1aWxkQXJncykgIT0gMCkg
eworICAgIGRpZSAiUnVubmluZyBqaGJ1aWxkIGZhaWxlZC5cbiIKK30KZGlmZiAtLWdpdCBhL1Rv
b2xzL1NjcmlwdHMvdXBkYXRlLXdlYmtpdGd0ay1saWJzIGIvVG9vbHMvU2NyaXB0cy91cGRhdGUt
d2Via2l0Z3RrLWxpYnMKaW5kZXggODAzM2M2Mi4uYmI2MjAxMSAxMDA3NTUKLS0tIGEvVG9vbHMv
U2NyaXB0cy91cGRhdGUtd2Via2l0Z3RrLWxpYnMKKysrIGIvVG9vbHMvU2NyaXB0cy91cGRhdGUt
d2Via2l0Z3RrLWxpYnMKQEAgLTEsNSArMSw2IEBACiAjIS91c3IvYmluL3BlcmwgLXcKICMgQ29w
eXJpZ2h0IChDKSAyMDExIElnYWxpYSBTLkwuCisjIENvcHlyaWdodCAoQykgMjAxMiBJbnRlbCBD
b3Jwb3JhdGlvbgogIwogIyBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy
ZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAjIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl
IEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKQEAgLTE5LDE4ICsyMCw1IEBAIHVzZSBGaW5kQmlu
OwogdXNlIGxpYiAkRmluZEJpbjo6QmluOwogdXNlIHdlYmtpdGRpcnM7CiAKLWRlbGV0ZSAkRU5W
e0FSX0ZMQUdTfSBpZiBleGlzdHMgJEVOVntBUl9GTEFHU307Ci0KLWNoZGlyKHJlbGF0aXZlU2Ny
aXB0c0RpcigpIC4gIi8uLi9ndGsiKSBvciBkaWUgJCE7Ci0KLW15IEBlbnN1cmVKaGJ1aWxkQXJn
cyA9ICgiLi9ydW4td2l0aC1qaGJ1aWxkIiwgImVjaG8iLCAiRW5zdXJlZCBqaGJ1aWxkIHNldHVw
LiIpOwotaWYgKHN5c3RlbShAZW5zdXJlSmhidWlsZEFyZ3MpICE9IDApIHsKLSAgICBkaWUgIkZh
aWxlZCB0byBlbnN1cmUgamhidWlsZCBpbnN0YWxsZWQuXG4iOwotfQotCi1wcmludCAiVXBkYXRp
bmcgR1RLKyBwb3J0IGRlcGVuZGVuY2llcyB1c2luZyBqaGJ1aWxkLi4uXG4iOwotbXkgQGpoYnVp
bGRBcmdzID0gKCIuLi8uLi9XZWJLaXRCdWlsZC9EZXBlbmRlbmNpZXMvUm9vdC9iaW4vamhidWls
ZCIsICItLW5vLWludGVyYWN0IiwgIi1mIiwgImpoYnVpbGRyYyIpOwotcHVzaChAamhidWlsZEFy
Z3MsIEBBUkdWWzEuLi0xXSk7Ci1pZiAoc3lzdGVtKEBqaGJ1aWxkQXJncykgIT0gMCkgewotICAg
IGRpZSAiUnVubmluZyBqaGJ1aWxkIGZhaWxlZC5cbiIKLX0KK215ICRzY3JpcHRzRGlyID0gcmVs
YXRpdmVTY3JpcHRzRGlyKCk7CitzeXN0ZW0oInBlcmwiLCAiJHNjcmlwdHNEaXIvdXBkYXRlLXdl
YmtpdC1saWJzLWpoYnVpbGQiLCAiLS1ndGsiLCBzeXMuYXJndikgPT0gMCBvciBkaWUgJCE7CmRp
ZmYgLS1naXQgYS9Ub29scy9ndGsvcnVuLXdpdGgtamhidWlsZCBiL1Rvb2xzL2d0ay9ydW4td2l0
aC1qaGJ1aWxkCmluZGV4IDVmODhlZDAuLmZkZjZmMGYgMTAwNzU1Ci0tLSBhL1Rvb2xzL2d0ay9y
dW4td2l0aC1qaGJ1aWxkCisrKyBiL1Rvb2xzL2d0ay9ydW4td2l0aC1qaGJ1aWxkCkBAIC0xLDYg
KzEsNyBAQAogIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCiAjIENvcHlyaWdodCAoQykgMjAxMSBJZ2Fs
aWEgUy5MLgogIyBDb3B5cmlnaHQgKEMpIDIwMTIgR3VzdGF2byBOb3JvbmhhIFNpbHZhIDxnbnNA
Z25vbWUub3JnPgorIyBDb3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRpb24KICMKICMg
VGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu
ZC9vcgogIyBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVy
YWwgUHVibGljCkBAIC0xNywxMDYgKzE4LDEwIEBACiAjIEZvdW5kYXRpb24sIEluYy4sIDUxIEZy
YW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQog
CiBpbXBvcnQgY29tbW9uCi1pbXBvcnQgb3MKIGltcG9ydCBzdWJwcm9jZXNzCiBpbXBvcnQgc3lz
CiAKLQotamhidWlsZF9yZXZpc2lvbiA9ICcxZWVkYzQyM2Y3NWM2MDUyMjRiNDMwNTc5ZTRjMzAz
MjkyMTk5NTA3JwotCi1pbnN0YWxsYXRpb25fcHJlZml4ID0gb3MucGF0aC5hYnNwYXRoKGNvbW1v
bi50b3BfbGV2ZWxfcGF0aCgnV2ViS2l0QnVpbGQnLCAnRGVwZW5kZW5jaWVzJywgJ1Jvb3QnKSkK
LXNvdXJjZV9wYXRoID0gb3MucGF0aC5hYnNwYXRoKGNvbW1vbi50b3BfbGV2ZWxfcGF0aCgnV2Vi
S2l0QnVpbGQnLCAnRGVwZW5kZW5jaWVzJywgJ1NvdXJjZScpKQotamhidWlsZF9zb3VyY2VfcGF0
aCA9IG9zLnBhdGguam9pbihzb3VyY2VfcGF0aCwgJ2poYnVpbGQnKQotamhidWlsZF9wYXRoID0g
Y29tbW9uLnRvcF9sZXZlbF9wYXRoKCdXZWJLaXRCdWlsZCcsICdEZXBlbmRlbmNpZXMnLCAnUm9v
dCcsICdiaW4nLCAnamhidWlsZCcpCi0KLQotZGVmIGpoYnVpbGRfaW5zdGFsbGVkKCk6Ci0gICAg
cmV0dXJuIG9zLnBhdGguZXhpc3RzKGpoYnVpbGRfcGF0aCkKLQotCi1kZWYgamhidWlsZF9jbG9u
ZWQoKToKLSAgICByZXR1cm4gb3MucGF0aC5leGlzdHMoamhidWlsZF9zb3VyY2VfcGF0aCkKLQot
Ci1kZWYgamhidWlsZF9hdF9leHBlY3RlZF9yZXZpc2lvbigpOgotICAgIHByb2Nlc3MgPSBzdWJw
cm9jZXNzLlBvcGVuKFsnZ2l0JywgJ3Jldi1saXN0JywgJ0hFQUReLi4nXSwgY3dkPWpoYnVpbGRf
c291cmNlX3BhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rkb3V0PXN1YnBy
b2Nlc3MuUElQRSwgc3RkZXJyPXN1YnByb2Nlc3MuUElQRSkKLSAgICBvdXRwdXQsIGVyciA9IHBy
b2Nlc3MuY29tbXVuaWNhdGUoKQotICAgIGlmIHByb2Nlc3MucmV0dXJuY29kZSAhPSAwOgotICAg
ICAgICByYWlzZSBFeGNlcHRpb24oJ2ZhaWxlZCB0byBmaW5kIGpoYnVpbGQgcmV2aXNpb246ICVz
JyAlIGVycikKLQotICAgIHJldHVybiBvdXRwdXQuc3RyaXAoKSA9PSBqaGJ1aWxkX3JldmlzaW9u
Ci0KLQotZGVmIHVwZGF0ZV9qaGJ1aWxkKCk6Ci0gICAgcHJvY2VzcyA9IHN1YnByb2Nlc3MuUG9w
ZW4oWydnaXQnLCAncmVtb3RlJywgJ3VwZGF0ZScsICdvcmlnaW4nXSwgY3dkPWpoYnVpbGRfc291
cmNlX3BhdGgpCi0gICAgcHJvY2Vzcy53YWl0KCkKLSAgICBpZiBwcm9jZXNzLnJldHVybmNvZGUg
IT0gMDoKLSAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCdqaGJ1aWxkIHJlbW90ZSB1cGRhdGUgb3Jp
Z2luIGZhaWxlZCB3aXRoIHJldHVybiBjb2RlOiAlaScgJSBwcm9jZXNzLnJldHVybmNvZGUpCi0K
LSAgICBwcm9jZXNzID0gc3VicHJvY2Vzcy5Qb3BlbihbJ2dpdCcsICdjaGVja291dCcsICclcycg
JSBqaGJ1aWxkX3JldmlzaW9uXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjd2Q9
amhidWlsZF9zb3VyY2VfcGF0aCkKLSAgICBwcm9jZXNzLndhaXQoKQotICAgIGlmIHByb2Nlc3Mu
cmV0dXJuY29kZSAhPSAwOgotICAgICAgICByYWlzZSBFeGNlcHRpb24oJ2ZhaWxlZCB0byBjaGVj
a291dCB0cmVlaXNoICVzOiAlaScgJSAoamhidWlsZF9yZXZpc2lvbiwgcHJvY2Vzcy5yZXR1cm5j
b2RlKSkKLQotCi1kZWYgY2xvbmVfamhidWlsZCgpOgotICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0
cyhzb3VyY2VfcGF0aCk6Ci0gICAgICAgIG9zLm1ha2VkaXJzKHNvdXJjZV9wYXRoKQotICAgIGlm
IG5vdCBvcy5wYXRoLmV4aXN0cyhpbnN0YWxsYXRpb25fcHJlZml4KToKLSAgICAgICAgb3MubWFr
ZWRpcnMoaW5zdGFsbGF0aW9uX3ByZWZpeCkKLQotICAgIHByb2Nlc3MgPSBzdWJwcm9jZXNzLlBv
cGVuKFsnZ2l0JywgJ2Nsb25lJywgJ2dpdDovL2dpdC5nbm9tZS5vcmcvamhidWlsZCddLCBjd2Q9
c291cmNlX3BhdGgpCi0gICAgcHJvY2Vzcy53YWl0KCkKLSAgICBpZiBwcm9jZXNzLnJldHVybmNv
ZGUgIT0gMDoKLSAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCdqaGJ1aWxkIGdpdCBjbG9uZSBmYWls
ZWQgd2l0aCByZXR1cm4gY29kZTogJWknICUgcHJvY2Vzcy5yZXR1cm5jb2RlKQotCi0KLWRlZiBp
bnN0YWxsX2poYnVpbGQoKToKLSAgICAjIGpoYnVpbGQgaXMgcmVhbGx5IHVuaGFwcHkgYWJvdXQg
aGF2aW5nIE1BS0UgZGVmaW5lZCB0byBzb21ldGhpbmcgbGlrZSAnbWFrZSAtajQnCi0gICAgIyBz
byB3ZSBqdXN0IHVuZGVmaW5lIGl0IGhlcmUuCi0gICAgZW52X3dpdGhvdXRfbWFrZSA9IGRpY3Qo
b3MuZW52aXJvbikKLSAgICBpZiAnTUFLRScgaW4gZW52X3dpdGhvdXRfbWFrZToKLSAgICAgICAg
ZGVsIGVudl93aXRob3V0X21ha2VbJ01BS0UnXQotCi0gICAgcHJvY2VzcyA9IHN1YnByb2Nlc3Mu
UG9wZW4oWycuL2F1dG9nZW4uc2gnLCAnLS1wcmVmaXg9JXMnICUgaW5zdGFsbGF0aW9uX3ByZWZp
eF0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3dkPWpoYnVpbGRfc291cmNlX3Bh
dGgsIGVudj1lbnZfd2l0aG91dF9tYWtlKQotICAgIHByb2Nlc3Mud2FpdCgpCi0gICAgaWYgcHJv
Y2Vzcy5yZXR1cm5jb2RlICE9IDA6Ci0gICAgICAgIHJhaXNlIEV4Y2VwdGlvbignamhidWlsZCBj
b25maWd1cmUgZmFpbGVkIHdpdGggcmV0dXJuIGNvZGU6ICVpJyAlIHByb2Nlc3MucmV0dXJuY29k
ZSkKLQotICAgIHByb2Nlc3MgPSBzdWJwcm9jZXNzLlBvcGVuKFsnbWFrZScsICdpbnN0YWxsJ10s
IGN3ZD1qaGJ1aWxkX3NvdXJjZV9wYXRoLCBlbnY9ZW52X3dpdGhvdXRfbWFrZSkKLSAgICBwcm9j
ZXNzLndhaXQoKQotICAgIGlmIHByb2Nlc3MucmV0dXJuY29kZSAhPSAwOgotICAgICAgICByYWlz
ZSBFeGNlcHRpb24oJ2poYnVpbGQgY29uZmlndXJlIGZhaWxlZCB3aXRoIHJldHVybiBjb2RlOiAl
aScgJSBwcm9jZXNzLnJldHVybmNvZGUpCi0KLQotZGVmIHVwZGF0ZV93ZWJraXRndGtfbGlicygp
OgotICAgIHByb2Nlc3MgPSBzdWJwcm9jZXNzLlBvcGVuKGNvbW1vbi50b3BfbGV2ZWxfcGF0aCgn
VG9vbHMnLCAnU2NyaXB0cycsICd1cGRhdGUtd2Via2l0Z3RrLWxpYnMnKSkKLSAgICBwcm9jZXNz
LndhaXQoKQotICAgIGlmIHByb2Nlc3MucmV0dXJuY29kZSAhPSAwOgotICAgICAgICByYWlzZSBF
eGNlcHRpb24oJ2poYnVpbGQgY29uZmlndXJlIGZhaWxlZCB3aXRoIHJldHVybiBjb2RlOiAlaScg
JSBwcm9jZXNzLnJldHVybmNvZGUpCi0KLQotZGVmIGVuc3VyZV9qaGJ1aWxkKCk6Ci0gICAgaWYg
bm90IGpoYnVpbGRfY2xvbmVkKCk6Ci0gICAgICAgIGNsb25lX2poYnVpbGQoKQotICAgICAgICB1
cGRhdGVfamhidWlsZCgpCi0gICAgICAgIGluc3RhbGxfamhidWlsZCgpCi0gICAgICAgIHVwZGF0
ZV93ZWJraXRndGtfbGlicygpCi0gICAgZWxpZiBub3QgamhidWlsZF9pbnN0YWxsZWQoKSBcCi0g
ICAgICAgICAgICBvciBub3QgamhidWlsZF9hdF9leHBlY3RlZF9yZXZpc2lvbigpOgotICAgICAg
ICB1cGRhdGVfamhidWlsZCgpCi0gICAgICAgIGluc3RhbGxfamhidWlsZCgpCi0KLQotZW5zdXJl
X2poYnVpbGQoKQotCi0KLXByb2Nlc3MgPSBzdWJwcm9jZXNzLlBvcGVuKFtqaGJ1aWxkX3BhdGgs
ICctLW5vLWludGVyYWN0JywgJy1mJywgY29tbW9uLnRvcF9sZXZlbF9wYXRoKCdUb29scycsICdn
dGsnLCAnamhidWlsZHJjJyksICdydW4nXSArIHN5cy5hcmd2WzE6XSkKK2poYnVpbGRfd3JhcHBl
ciA9IGNvbW1vbi50b3BfbGV2ZWxfcGF0aCgnVG9vbHMnLCAnamhidWlsZCcsICdqaGJ1aWxkLXdy
YXBwZXInKQorcHJvY2VzcyA9IHN1YnByb2Nlc3MuUG9wZW4oW2poYnVpbGRfd3JhcHBlciwgJy0t
Z3RrJ10gKyBzeXMuYXJndlsxOl0pCiBwcm9jZXNzLndhaXQoKQogc3lzLmV4aXQocHJvY2Vzcy5y
ZXR1cm5jb2RlKQotCi0KLQpkaWZmIC0tZ2l0IGEvVG9vbHMvamhidWlsZC9qaGJ1aWxkLXdyYXBw
ZXIgYi9Ub29scy9qaGJ1aWxkL2poYnVpbGQtd3JhcHBlcgpuZXcgZmlsZSBtb2RlIDEwMDc1NQpp
bmRleCAwMDAwMDAwLi40MWViNWJjCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvamhidWlsZC9q
aGJ1aWxkLXdyYXBwZXIKQEAgLTAsMCArMSwxMzggQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgor
IyBDb3B5cmlnaHQgKEMpIDIwMTEgSWdhbGlhIFMuTC4KKyMgQ29weXJpZ2h0IChDKSAyMDEyIEd1
c3Rhdm8gTm9yb25oYSBTaWx2YSA8Z25zQGdub21lLm9yZz4KKyMgQ29weXJpZ2h0IChDKSAyMDEy
IEludGVsIENvcnBvcmF0aW9uCisjCisjIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5
b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyMgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworIyBMaWNlbnNlIGFzIHB1Ymxpc2hl
ZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyMgdmVyc2lvbiAyIG9m
IHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorIwor
IyBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl
IHVzZWZ1bCwKKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt
cGxpZWQgd2FycmFudHkgb2YKKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyMgTGVzc2VyIEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyMKKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg
Y29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworIyBMaWNlbnNlIGFsb25nIHdp
dGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisjIEZv
dW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3Rvbiwg
TUEgIDAyMTEwLTEzMDEgIFVTQQorCitpbXBvcnQgb3MKK2ltcG9ydCBzdWJwcm9jZXNzCitpbXBv
cnQgc3lzCisKKwordG9wX2xldmVsX2RpciA9IE5vbmUKKworCitkZWYgdG9wX2xldmVsX3BhdGgo
KmFyZ3MpOgorICAgIGdsb2JhbCB0b3BfbGV2ZWxfZGlyCisgICAgaWYgbm90IHRvcF9sZXZlbF9k
aXI6CisgICAgICAgIHRvcF9sZXZlbF9kaXIgPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1l
KF9fZmlsZV9fKSwgJy4uJywgJy4uJykKKyAgICByZXR1cm4gb3MucGF0aC5qb2luKCoodG9wX2xl
dmVsX2RpciwpICsgYXJncykKKworCitqaGJ1aWxkX3JldmlzaW9uID0gJzFlZWRjNDIzZjc1YzYw
NTIyNGI0MzA1NzllNGMzMDMyOTIxOTk1MDcnCisKK2luc3RhbGxhdGlvbl9wcmVmaXggPSBvcy5w
YXRoLmFic3BhdGgodG9wX2xldmVsX3BhdGgoJ1dlYktpdEJ1aWxkJywgJ0RlcGVuZGVuY2llcycs
ICdSb290JykpCitzb3VyY2VfcGF0aCA9IG9zLnBhdGguYWJzcGF0aCh0b3BfbGV2ZWxfcGF0aCgn
V2ViS2l0QnVpbGQnLCAnRGVwZW5kZW5jaWVzJywgJ1NvdXJjZScpKQoramhidWlsZF9zb3VyY2Vf
cGF0aCA9IG9zLnBhdGguam9pbihzb3VyY2VfcGF0aCwgJ2poYnVpbGQnKQoramhidWlsZF9wYXRo
ID0gdG9wX2xldmVsX3BhdGgoJ1dlYktpdEJ1aWxkJywgJ0RlcGVuZGVuY2llcycsICdSb290Jywg
J2JpbicsICdqaGJ1aWxkJykKK3BsYXRmb3JtID0gTm9uZTsKKworCitkZWYgamhidWlsZF9pbnN0
YWxsZWQoKToKKyAgICByZXR1cm4gb3MucGF0aC5leGlzdHMoamhidWlsZF9wYXRoKQorCisKK2Rl
ZiBqaGJ1aWxkX2Nsb25lZCgpOgorICAgIHJldHVybiBvcy5wYXRoLmV4aXN0cyhqaGJ1aWxkX3Nv
dXJjZV9wYXRoKQorCisKK2RlZiBqaGJ1aWxkX2F0X2V4cGVjdGVkX3JldmlzaW9uKCk6CisgICAg
cHJvY2VzcyA9IHN1YnByb2Nlc3MuUG9wZW4oWydnaXQnLCAncmV2LWxpc3QnLCAnSEVBRF4uLidd
LCBjd2Q9amhidWlsZF9zb3VyY2VfcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLCBzdGRlcnI9c3VicHJvY2Vzcy5QSVBFKQorICAgIG91
dHB1dCwgZXJyID0gcHJvY2Vzcy5jb21tdW5pY2F0ZSgpCisgICAgaWYgcHJvY2Vzcy5yZXR1cm5j
b2RlICE9IDA6CisgICAgICAgIHJhaXNlIEV4Y2VwdGlvbignZmFpbGVkIHRvIGZpbmQgamhidWls
ZCByZXZpc2lvbjogJXMnICUgZXJyKQorCisgICAgcmV0dXJuIG91dHB1dC5zdHJpcCgpID09IGpo
YnVpbGRfcmV2aXNpb24KKworCitkZWYgdXBkYXRlX2poYnVpbGQoKToKKyAgICBwcm9jZXNzID0g
c3VicHJvY2Vzcy5Qb3BlbihbJ2dpdCcsICdyZW1vdGUnLCAndXBkYXRlJywgJ29yaWdpbiddLCBj
d2Q9amhidWlsZF9zb3VyY2VfcGF0aCkKKyAgICBwcm9jZXNzLndhaXQoKQorICAgIGlmIHByb2Nl
c3MucmV0dXJuY29kZSAhPSAwOgorICAgICAgICByYWlzZSBFeGNlcHRpb24oJ2poYnVpbGQgcmVt
b3RlIHVwZGF0ZSBvcmlnaW4gZmFpbGVkIHdpdGggcmV0dXJuIGNvZGU6ICVpJyAlIHByb2Nlc3Mu
cmV0dXJuY29kZSkKKworICAgIHByb2Nlc3MgPSBzdWJwcm9jZXNzLlBvcGVuKFsnZ2l0JywgJ2No
ZWNrb3V0JywgJyVzJyAlIGpoYnVpbGRfcmV2aXNpb25dLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGN3ZD1qaGJ1aWxkX3NvdXJjZV9wYXRoKQorICAgIHByb2Nlc3Mud2FpdCgpCisg
ICAgaWYgcHJvY2Vzcy5yZXR1cm5jb2RlICE9IDA6CisgICAgICAgIHJhaXNlIEV4Y2VwdGlvbign
ZmFpbGVkIHRvIGNoZWNrb3V0IHRyZWVpc2ggJXM6ICVpJyAlIChqaGJ1aWxkX3JldmlzaW9uLCBw
cm9jZXNzLnJldHVybmNvZGUpKQorCisKK2RlZiBjbG9uZV9qaGJ1aWxkKCk6CisgICAgaWYgbm90
IG9zLnBhdGguZXhpc3RzKHNvdXJjZV9wYXRoKToKKyAgICAgICAgb3MubWFrZWRpcnMoc291cmNl
X3BhdGgpCisgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKGluc3RhbGxhdGlvbl9wcmVmaXgpOgor
ICAgICAgICBvcy5tYWtlZGlycyhpbnN0YWxsYXRpb25fcHJlZml4KQorCisgICAgcHJvY2VzcyA9
IHN1YnByb2Nlc3MuUG9wZW4oWydnaXQnLCAnY2xvbmUnLCAnZ2l0Oi8vZ2l0Lmdub21lLm9yZy9q
aGJ1aWxkJ10sIGN3ZD1zb3VyY2VfcGF0aCkKKyAgICBwcm9jZXNzLndhaXQoKQorICAgIGlmIHBy
b2Nlc3MucmV0dXJuY29kZSAhPSAwOgorICAgICAgICByYWlzZSBFeGNlcHRpb24oJ2poYnVpbGQg
Z2l0IGNsb25lIGZhaWxlZCB3aXRoIHJldHVybiBjb2RlOiAlaScgJSBwcm9jZXNzLnJldHVybmNv
ZGUpCisKKworZGVmIGluc3RhbGxfamhidWlsZCgpOgorICAgICMgamhidWlsZCBpcyByZWFsbHkg
dW5oYXBweSBhYm91dCBoYXZpbmcgTUFLRSBkZWZpbmVkIHRvIHNvbWV0aGluZyBsaWtlICdtYWtl
IC1qNCcKKyAgICAjIHNvIHdlIGp1c3QgdW5kZWZpbmUgaXQgaGVyZS4KKyAgICBlbnZfd2l0aG91
dF9tYWtlID0gZGljdChvcy5lbnZpcm9uKQorICAgIGlmICdNQUtFJyBpbiBlbnZfd2l0aG91dF9t
YWtlOgorICAgICAgICBkZWwgZW52X3dpdGhvdXRfbWFrZVsnTUFLRSddCisKKyAgICBwcm9jZXNz
ID0gc3VicHJvY2Vzcy5Qb3BlbihbJy4vYXV0b2dlbi5zaCcsICctLXByZWZpeD0lcycgJSBpbnN0
YWxsYXRpb25fcHJlZml4XSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjd2Q9amhi
dWlsZF9zb3VyY2VfcGF0aCwgZW52PWVudl93aXRob3V0X21ha2UpCisgICAgcHJvY2Vzcy53YWl0
KCkKKyAgICBpZiBwcm9jZXNzLnJldHVybmNvZGUgIT0gMDoKKyAgICAgICAgcmFpc2UgRXhjZXB0
aW9uKCdqaGJ1aWxkIGNvbmZpZ3VyZSBmYWlsZWQgd2l0aCByZXR1cm4gY29kZTogJWknICUgcHJv
Y2Vzcy5yZXR1cm5jb2RlKQorCisgICAgcHJvY2VzcyA9IHN1YnByb2Nlc3MuUG9wZW4oWydtYWtl
JywgJ2luc3RhbGwnXSwgY3dkPWpoYnVpbGRfc291cmNlX3BhdGgsIGVudj1lbnZfd2l0aG91dF9t
YWtlKQorICAgIHByb2Nlc3Mud2FpdCgpCisgICAgaWYgcHJvY2Vzcy5yZXR1cm5jb2RlICE9IDA6
CisgICAgICAgIHJhaXNlIEV4Y2VwdGlvbignamhidWlsZCBjb25maWd1cmUgZmFpbGVkIHdpdGgg
cmV0dXJuIGNvZGU6ICVpJyAlIHByb2Nlc3MucmV0dXJuY29kZSkKKworCitkZWYgdXBkYXRlX3dl
YmtpdF9saWJzX2poYnVpbGQoKToKKyAgICBwcm9jZXNzID0gc3VicHJvY2Vzcy5Qb3BlbihbdG9w
X2xldmVsX3BhdGgoJ1Rvb2xzJywgJ1NjcmlwdHMnLCAndXBkYXRlLXdlYmtpdC1saWJzLWpoYnVp
bGQnKSwgJy0tJyArIHBsYXRmb3JtXSkKKyAgICBwcm9jZXNzLndhaXQoKQorICAgIGlmIHByb2Nl
c3MucmV0dXJuY29kZSAhPSAwOgorICAgICAgICByYWlzZSBFeGNlcHRpb24oJ2poYnVpbGQgY29u
ZmlndXJlIGZhaWxlZCB3aXRoIHJldHVybiBjb2RlOiAlaScgJSBwcm9jZXNzLnJldHVybmNvZGUp
CisKKworZGVmIGRldGVybWluZV9wbGF0Zm9ybSgpOgorICAgIGlmICctLWVmbCcgaW4gc3lzLmFy
Z3Y6CisgICAgICAgIHJldHVybiAiZWZsIjsKKyAgICBpZiAnLS1ndGsnIGluIHN5cy5hcmd2Ogor
ICAgICAgICByZXR1cm4gImd0ayI7CisgICAgc3lzLmV4aXQoIk5vIHBsYXRmb3JtIHNwZWNpZmll
ZCBmb3IgamhidWlsZC13cmFwcGVyLiIpCisKKworZGVmIGVuc3VyZV9qaGJ1aWxkKCk6CisgICAg
aWYgbm90IGpoYnVpbGRfY2xvbmVkKCk6CisgICAgICAgIGNsb25lX2poYnVpbGQoKQorICAgICAg
ICB1cGRhdGVfamhidWlsZCgpCisgICAgICAgIGluc3RhbGxfamhidWlsZCgpCisgICAgICAgIHVw
ZGF0ZV93ZWJraXRfbGlic19qaGJ1aWxkKCkKKyAgICBlbGlmIG5vdCBqaGJ1aWxkX2luc3RhbGxl
ZCgpIFwKKyAgICAgICAgICAgIG9yIG5vdCBqaGJ1aWxkX2F0X2V4cGVjdGVkX3JldmlzaW9uKCk6
CisgICAgICAgIHVwZGF0ZV9qaGJ1aWxkKCkKKyAgICAgICAgaW5zdGFsbF9qaGJ1aWxkKCkKKwor
CitwbGF0Zm9ybSA9IGRldGVybWluZV9wbGF0Zm9ybSgpCitlbnN1cmVfamhidWlsZCgpCisKK3By
b2Nlc3MgPSBzdWJwcm9jZXNzLlBvcGVuKFtqaGJ1aWxkX3BhdGgsICctLW5vLWludGVyYWN0Jywg
Jy1mJywgdG9wX2xldmVsX3BhdGgoJ1Rvb2xzJywgcGxhdGZvcm0sICdqaGJ1aWxkcmMnKSwgJ3J1
biddICsgc3lzLmFyZ3ZbMjpdKQorcHJvY2Vzcy53YWl0KCkKK3N5cy5leGl0KHByb2Nlc3MucmV0
dXJuY29kZSkK
</data>
<flag name="review"
          id="135289"
          type_id="1"
          status="-"
          setter="pnormand"
    />
    <flag name="commit-queue"
          id="135290"
          type_id="3"
          status="-"
          setter="pnormand"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>132008</attachid>
            <date>2012-03-15 02:57:04 -0700</date>
            <delta_ts>2012-03-15 07:59:12 -0700</delta_ts>
            <desc>Proposal for patching jhbuild related scripts, v5</desc>
            <filename>bug79673_v5.patch</filename>
            <type>text/plain</type>
            <size>14327</size>
            <attacher name="Dominik Röttsches (drott)">d-r</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA5NThj
NDRhLi5iYzRkZDcyIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjcgQEAKKzIwMTItMDMtMTQgIERvbWluaWsgUsO2dHRzY2hlcyAg
PGRvbWluaWsucm90dHNjaGVzQGxpbnV4LmludGVsLmNvbT4KKworICAgICAgICBQYXJhbWV0cml6
ZSBydW4td2l0aC1qaGJ1aWxkIGFuZCB1cGRhdGUtd2Via2l0Z3RrLWxpYnMgd2l0aCBwbGF0Zm9y
bSAtLWd0ay8tLWVmbAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9Nzk2NzMKKworICAgICAgICBQcmVwYXJhdG9yeSB3b3JrIGZvciBicmluZ2luZyBqaGJ1
aWxkIGVuYWJsZWQgYnVpbGQgdG8gRUZMIHBvcnQuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTY3JpcHRzL3VwZGF0ZS13ZWJraXQtbGlicy1qaGJ1
aWxkOiBDb3BpZWQgZnJvbSBUb29scy9TY3JpcHRzL3VwZGF0ZS13ZWJraXRndGstbGlicy4KKyAg
ICAgICAgKiBTY3JpcHRzL3VwZGF0ZS13ZWJraXRndGstbGliczoKKyAgICAgICAgKiBndGsvcnVu
LXdpdGgtamhidWlsZDoKKyAgICAgICAgKiBqaGJ1aWxkL2poYnVpbGQtd3JhcHBlcjogQ29waWVk
IGZyb20gVG9vbHMvZ3RrL3J1bi13aXRoLWpoYnVpbGQuCisgICAgICAgICh0b3BfbGV2ZWxfcGF0
aCk6CisgICAgICAgIChqaGJ1aWxkX2luc3RhbGxlZCk6CisgICAgICAgIChqaGJ1aWxkX2Nsb25l
ZCk6CisgICAgICAgIChqaGJ1aWxkX2F0X2V4cGVjdGVkX3JldmlzaW9uKToKKyAgICAgICAgKHVw
ZGF0ZV9qaGJ1aWxkKToKKyAgICAgICAgKGNsb25lX2poYnVpbGQpOgorICAgICAgICAoaW5zdGFs
bF9qaGJ1aWxkKToKKyAgICAgICAgKHVwZGF0ZV93ZWJraXRfbGlic19qaGJ1aWxkKToKKyAgICAg
ICAgKGRldGVybWluZV9wbGF0Zm9ybSk6CisgICAgICAgIChlbnN1cmVfamhidWlsZCk6CisKIDIw
MTItMDMtMTMgIFRoaWFnbyBNYXJjb3MgUC4gU2FudG9zICA8dGhpYWdvLnNhbnRvc0BpbnRlbC5j
b20+CiAKICAgICAgICAgW0VGTF1bRFJUXSBFeHBvc2Ugd2luZG93LmludGVybmFscyBvYmplY3QK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvdXBkYXRlLXdlYmtpdC1saWJzLWpoYnVpbGQgYi9U
b29scy9TY3JpcHRzL3VwZGF0ZS13ZWJraXQtbGlicy1qaGJ1aWxkCm5ldyBmaWxlIG1vZGUgMTAw
NzU1CmluZGV4IDAwMDAwMDAuLjdlMjQ0MGEKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9TY3Jp
cHRzL3VwZGF0ZS13ZWJraXQtbGlicy1qaGJ1aWxkCkBAIC0wLDAgKzEsNjEgQEAKKyMhL3Vzci9i
aW4vcGVybCAtdworIyBDb3B5cmlnaHQgKEMpIDIwMTEgSWdhbGlhIFMuTC4KKyMgQ29weXJpZ2h0
IChDKSAyMDEyIEludGVsIENvcnBvcmF0aW9uCisjCisjIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNv
ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyMgbW9kaWZ5IGl0IHVuZGVy
IHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworIyBMaWNlbnNlIGFz
IHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyMgdmVy
c2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJz
aW9uLgorIworIyBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp
dCB3aWxsIGJlIHVzZWZ1bCwKKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2
ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyMgTGVzc2VyIEdlbmVyYWwg
UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyMKKyMgWW91IHNob3VsZCBoYXZlIHJl
Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworIyBMaWNlbnNl
IGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3
YXJlCisjIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3Is
IEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQorCit1c2UgRmluZEJpbjsKK3VzZSBsaWIgJEZp
bmRCaW46OkJpbjsKK3VzZSB3ZWJraXRkaXJzOwordXNlIEdldG9wdDo6TG9uZzsKKworbXkgJHBs
YXRmb3JtRWZsID0gMDsKK215ICRwbGF0Zm9ybUd0ayA9IDA7CisKK215ICRnZXRPcHRpb25zUmVz
dWx0ID0gR2V0T3B0aW9ucygKKyAgICAnZWZsJyA9PiBcJHBsYXRmb3JtRWZsLAorICAgICdndGsn
ID0+IFwkcGxhdGZvcm1HdGsKKyAgICApOworCitteSAkcGxhdGZvcm0gPSAiIjsKK2lmICghJGdl
dE9wdGlvbnNSZXN1bHQpIHsKKyAgICBkaWUgIk5vIHBsYXRmb3JtIHNwZWNpZmllZCBmb3IgIiAu
IGJhc2VuYW1lKCQwKSAuIi4gVXNlIC0tZ3RrIG9yIC0tZWZsLlxuIjsKK30gZWxzZSB7CisgICAg
aWYgKCRwbGF0Zm9ybUVmbCkgeworICAgICAgICAkcGxhdGZvcm0gPSAiZWZsIjsKKyAgICB9Cisg
ICAgaWYgKCRwbGF0Zm9ybUd0aykgeworICAgICAgICAkcGxhdGZvcm0gPSAiZ3RrIjsKKyAgICB9
Cit9CisKK2RlbGV0ZSAkRU5We0FSX0ZMQUdTfSBpZiBleGlzdHMgJEVOVntBUl9GTEFHU307CisK
K2NoZGlyKHJlbGF0aXZlU2NyaXB0c0RpcigpIC4gIi8uLi9qaGJ1aWxkIikgb3IgZGllICQhOwor
CitteSBAZW5zdXJlSmhidWlsZEFyZ3MgPSAoIi4vamhidWlsZC13cmFwcGVyIiwgIi0tIi4kcGxh
dGZvcm0sICJlY2hvIiwgIkVuc3VyZWQgamhidWlsZCBzZXR1cC4iKTsKK2lmIChzeXN0ZW0oQGVu
c3VyZUpoYnVpbGRBcmdzKSAhPSAwKSB7CisgICAgZGllICJGYWlsZWQgdG8gZW5zdXJlIGpoYnVp
bGQgaW5zdGFsbGVkLlxuIjsKK30KKworY2hkaXIocmVsYXRpdmVTY3JpcHRzRGlyKCkgLiAiLy4u
LyIuJHBsYXRmb3JtKSBvciBkaWUgJCE7CisKK215ICVwcmV0dHlQbGF0Zm9ybSA9ICggImVmbCIg
PT4gIkVGTCIsICJndGsiID0+ICJHVEsrIiApOworcHJpbnQgIlVwZGF0aW5nICIgLiAkcHJldHR5
UGxhdGZvcm17JHBsYXRmb3JtfSAuICIgcG9ydCBkZXBlbmRlbmNpZXMgdXNpbmcgamhidWlsZC4u
LlxuIjsKK215IEBqaGJ1aWxkQXJncyA9ICgiLi4vLi4vV2ViS2l0QnVpbGQvRGVwZW5kZW5jaWVz
L1Jvb3QvYmluL2poYnVpbGQiLCAiLS1uby1pbnRlcmFjdCIsICItZiIsICJqaGJ1aWxkcmMiKTsK
K3B1c2goQGpoYnVpbGRBcmdzLCBAQVJHVlsyLi4tMV0pOworaWYgKHN5c3RlbShAamhidWlsZEFy
Z3MpICE9IDApIHsKKyAgICBkaWUgIlJ1bm5pbmcgamhidWlsZCBmYWlsZWQuXG4iCit9CmRpZmYg
LS1naXQgYS9Ub29scy9TY3JpcHRzL3VwZGF0ZS13ZWJraXRndGstbGlicyBiL1Rvb2xzL1Njcmlw
dHMvdXBkYXRlLXdlYmtpdGd0ay1saWJzCmluZGV4IDgwMzNjNjIuLmJiNjIwMTEgMTAwNzU1Ci0t
LSBhL1Rvb2xzL1NjcmlwdHMvdXBkYXRlLXdlYmtpdGd0ay1saWJzCisrKyBiL1Rvb2xzL1Njcmlw
dHMvdXBkYXRlLXdlYmtpdGd0ay1saWJzCkBAIC0xLDUgKzEsNiBAQAogIyEvdXNyL2Jpbi9wZXJs
IC13CiAjIENvcHlyaWdodCAoQykgMjAxMSBJZ2FsaWEgUy5MLgorIyBDb3B5cmlnaHQgKEMpIDIw
MTIgSW50ZWwgQ29ycG9yYXRpb24KICMKICMgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7
IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogIyBtb2RpZnkgaXQgdW5kZXIgdGhlIHRl
cm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCkBAIC0xOSwxOCArMjAsNSBAQCB1
c2UgRmluZEJpbjsKIHVzZSBsaWIgJEZpbmRCaW46OkJpbjsKIHVzZSB3ZWJraXRkaXJzOwogCi1k
ZWxldGUgJEVOVntBUl9GTEFHU30gaWYgZXhpc3RzICRFTlZ7QVJfRkxBR1N9OwotCi1jaGRpcihy
ZWxhdGl2ZVNjcmlwdHNEaXIoKSAuICIvLi4vZ3RrIikgb3IgZGllICQhOwotCi1teSBAZW5zdXJl
SmhidWlsZEFyZ3MgPSAoIi4vcnVuLXdpdGgtamhidWlsZCIsICJlY2hvIiwgIkVuc3VyZWQgamhi
dWlsZCBzZXR1cC4iKTsKLWlmIChzeXN0ZW0oQGVuc3VyZUpoYnVpbGRBcmdzKSAhPSAwKSB7Ci0g
ICAgZGllICJGYWlsZWQgdG8gZW5zdXJlIGpoYnVpbGQgaW5zdGFsbGVkLlxuIjsKLX0KLQotcHJp
bnQgIlVwZGF0aW5nIEdUSysgcG9ydCBkZXBlbmRlbmNpZXMgdXNpbmcgamhidWlsZC4uLlxuIjsK
LW15IEBqaGJ1aWxkQXJncyA9ICgiLi4vLi4vV2ViS2l0QnVpbGQvRGVwZW5kZW5jaWVzL1Jvb3Qv
YmluL2poYnVpbGQiLCAiLS1uby1pbnRlcmFjdCIsICItZiIsICJqaGJ1aWxkcmMiKTsKLXB1c2go
QGpoYnVpbGRBcmdzLCBAQVJHVlsxLi4tMV0pOwotaWYgKHN5c3RlbShAamhidWlsZEFyZ3MpICE9
IDApIHsKLSAgICBkaWUgIlJ1bm5pbmcgamhidWlsZCBmYWlsZWQuXG4iCi19CitteSAkc2NyaXB0
c0RpciA9IHJlbGF0aXZlU2NyaXB0c0RpcigpOworc3lzdGVtKCJwZXJsIiwgIiRzY3JpcHRzRGly
L3VwZGF0ZS13ZWJraXQtbGlicy1qaGJ1aWxkIiwgIi0tZ3RrIiwgc3lzLmFyZ3YpID09IDAgb3Ig
ZGllICQhOwpkaWZmIC0tZ2l0IGEvVG9vbHMvZ3RrL3J1bi13aXRoLWpoYnVpbGQgYi9Ub29scy9n
dGsvcnVuLXdpdGgtamhidWlsZAppbmRleCA1Zjg4ZWQwLi5mZGY2ZjBmIDEwMDc1NQotLS0gYS9U
b29scy9ndGsvcnVuLXdpdGgtamhidWlsZAorKysgYi9Ub29scy9ndGsvcnVuLXdpdGgtamhidWls
ZApAQCAtMSw2ICsxLDcgQEAKICMhL3Vzci9iaW4vZW52IHB5dGhvbgogIyBDb3B5cmlnaHQgKEMp
IDIwMTEgSWdhbGlhIFMuTC4KICMgQ29weXJpZ2h0IChDKSAyMDEyIEd1c3Rhdm8gTm9yb25oYSBT
aWx2YSA8Z25zQGdub21lLm9yZz4KKyMgQ29weXJpZ2h0IChDKSAyMDEyIEludGVsIENvcnBvcmF0
aW9uCiAjCiAjIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp
YnV0ZSBpdCBhbmQvb3IKICMgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExl
c3NlciBHZW5lcmFsIFB1YmxpYwpAQCAtMTcsMTA2ICsxOCwxMCBAQAogIyBGb3VuZGF0aW9uLCBJ
bmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0x
MzAxICBVU0EKIAogaW1wb3J0IGNvbW1vbgotaW1wb3J0IG9zCiBpbXBvcnQgc3VicHJvY2Vzcwog
aW1wb3J0IHN5cwogCi0KLWpoYnVpbGRfcmV2aXNpb24gPSAnMWVlZGM0MjNmNzVjNjA1MjI0YjQz
MDU3OWU0YzMwMzI5MjE5OTUwNycKLQotaW5zdGFsbGF0aW9uX3ByZWZpeCA9IG9zLnBhdGguYWJz
cGF0aChjb21tb24udG9wX2xldmVsX3BhdGgoJ1dlYktpdEJ1aWxkJywgJ0RlcGVuZGVuY2llcycs
ICdSb290JykpCi1zb3VyY2VfcGF0aCA9IG9zLnBhdGguYWJzcGF0aChjb21tb24udG9wX2xldmVs
X3BhdGgoJ1dlYktpdEJ1aWxkJywgJ0RlcGVuZGVuY2llcycsICdTb3VyY2UnKSkKLWpoYnVpbGRf
c291cmNlX3BhdGggPSBvcy5wYXRoLmpvaW4oc291cmNlX3BhdGgsICdqaGJ1aWxkJykKLWpoYnVp
bGRfcGF0aCA9IGNvbW1vbi50b3BfbGV2ZWxfcGF0aCgnV2ViS2l0QnVpbGQnLCAnRGVwZW5kZW5j
aWVzJywgJ1Jvb3QnLCAnYmluJywgJ2poYnVpbGQnKQotCi0KLWRlZiBqaGJ1aWxkX2luc3RhbGxl
ZCgpOgotICAgIHJldHVybiBvcy5wYXRoLmV4aXN0cyhqaGJ1aWxkX3BhdGgpCi0KLQotZGVmIGpo
YnVpbGRfY2xvbmVkKCk6Ci0gICAgcmV0dXJuIG9zLnBhdGguZXhpc3RzKGpoYnVpbGRfc291cmNl
X3BhdGgpCi0KLQotZGVmIGpoYnVpbGRfYXRfZXhwZWN0ZWRfcmV2aXNpb24oKToKLSAgICBwcm9j
ZXNzID0gc3VicHJvY2Vzcy5Qb3BlbihbJ2dpdCcsICdyZXYtbGlzdCcsICdIRUFEXi4uJ10sIGN3
ZD1qaGJ1aWxkX3NvdXJjZV9wYXRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0
ZG91dD1zdWJwcm9jZXNzLlBJUEUsIHN0ZGVycj1zdWJwcm9jZXNzLlBJUEUpCi0gICAgb3V0cHV0
LCBlcnIgPSBwcm9jZXNzLmNvbW11bmljYXRlKCkKLSAgICBpZiBwcm9jZXNzLnJldHVybmNvZGUg
IT0gMDoKLSAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCdmYWlsZWQgdG8gZmluZCBqaGJ1aWxkIHJl
dmlzaW9uOiAlcycgJSBlcnIpCi0KLSAgICByZXR1cm4gb3V0cHV0LnN0cmlwKCkgPT0gamhidWls
ZF9yZXZpc2lvbgotCi0KLWRlZiB1cGRhdGVfamhidWlsZCgpOgotICAgIHByb2Nlc3MgPSBzdWJw
cm9jZXNzLlBvcGVuKFsnZ2l0JywgJ3JlbW90ZScsICd1cGRhdGUnLCAnb3JpZ2luJ10sIGN3ZD1q
aGJ1aWxkX3NvdXJjZV9wYXRoKQotICAgIHByb2Nlc3Mud2FpdCgpCi0gICAgaWYgcHJvY2Vzcy5y
ZXR1cm5jb2RlICE9IDA6Ci0gICAgICAgIHJhaXNlIEV4Y2VwdGlvbignamhidWlsZCByZW1vdGUg
dXBkYXRlIG9yaWdpbiBmYWlsZWQgd2l0aCByZXR1cm4gY29kZTogJWknICUgcHJvY2Vzcy5yZXR1
cm5jb2RlKQotCi0gICAgcHJvY2VzcyA9IHN1YnByb2Nlc3MuUG9wZW4oWydnaXQnLCAnY2hlY2tv
dXQnLCAnJXMnICUgamhidWlsZF9yZXZpc2lvbl0sCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY3dkPWpoYnVpbGRfc291cmNlX3BhdGgpCi0gICAgcHJvY2Vzcy53YWl0KCkKLSAgICBp
ZiBwcm9jZXNzLnJldHVybmNvZGUgIT0gMDoKLSAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCdmYWls
ZWQgdG8gY2hlY2tvdXQgdHJlZWlzaCAlczogJWknICUgKGpoYnVpbGRfcmV2aXNpb24sIHByb2Nl
c3MucmV0dXJuY29kZSkpCi0KLQotZGVmIGNsb25lX2poYnVpbGQoKToKLSAgICBpZiBub3Qgb3Mu
cGF0aC5leGlzdHMoc291cmNlX3BhdGgpOgotICAgICAgICBvcy5tYWtlZGlycyhzb3VyY2VfcGF0
aCkKLSAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoaW5zdGFsbGF0aW9uX3ByZWZpeCk6Ci0gICAg
ICAgIG9zLm1ha2VkaXJzKGluc3RhbGxhdGlvbl9wcmVmaXgpCi0KLSAgICBwcm9jZXNzID0gc3Vi
cHJvY2Vzcy5Qb3BlbihbJ2dpdCcsICdjbG9uZScsICdnaXQ6Ly9naXQuZ25vbWUub3JnL2poYnVp
bGQnXSwgY3dkPXNvdXJjZV9wYXRoKQotICAgIHByb2Nlc3Mud2FpdCgpCi0gICAgaWYgcHJvY2Vz
cy5yZXR1cm5jb2RlICE9IDA6Ci0gICAgICAgIHJhaXNlIEV4Y2VwdGlvbignamhidWlsZCBnaXQg
Y2xvbmUgZmFpbGVkIHdpdGggcmV0dXJuIGNvZGU6ICVpJyAlIHByb2Nlc3MucmV0dXJuY29kZSkK
LQotCi1kZWYgaW5zdGFsbF9qaGJ1aWxkKCk6Ci0gICAgIyBqaGJ1aWxkIGlzIHJlYWxseSB1bmhh
cHB5IGFib3V0IGhhdmluZyBNQUtFIGRlZmluZWQgdG8gc29tZXRoaW5nIGxpa2UgJ21ha2UgLWo0
JwotICAgICMgc28gd2UganVzdCB1bmRlZmluZSBpdCBoZXJlLgotICAgIGVudl93aXRob3V0X21h
a2UgPSBkaWN0KG9zLmVudmlyb24pCi0gICAgaWYgJ01BS0UnIGluIGVudl93aXRob3V0X21ha2U6
Ci0gICAgICAgIGRlbCBlbnZfd2l0aG91dF9tYWtlWydNQUtFJ10KLQotICAgIHByb2Nlc3MgPSBz
dWJwcm9jZXNzLlBvcGVuKFsnLi9hdXRvZ2VuLnNoJywgJy0tcHJlZml4PSVzJyAlIGluc3RhbGxh
dGlvbl9wcmVmaXhdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN3ZD1qaGJ1aWxk
X3NvdXJjZV9wYXRoLCBlbnY9ZW52X3dpdGhvdXRfbWFrZSkKLSAgICBwcm9jZXNzLndhaXQoKQot
ICAgIGlmIHByb2Nlc3MucmV0dXJuY29kZSAhPSAwOgotICAgICAgICByYWlzZSBFeGNlcHRpb24o
J2poYnVpbGQgY29uZmlndXJlIGZhaWxlZCB3aXRoIHJldHVybiBjb2RlOiAlaScgJSBwcm9jZXNz
LnJldHVybmNvZGUpCi0KLSAgICBwcm9jZXNzID0gc3VicHJvY2Vzcy5Qb3BlbihbJ21ha2UnLCAn
aW5zdGFsbCddLCBjd2Q9amhidWlsZF9zb3VyY2VfcGF0aCwgZW52PWVudl93aXRob3V0X21ha2Up
Ci0gICAgcHJvY2Vzcy53YWl0KCkKLSAgICBpZiBwcm9jZXNzLnJldHVybmNvZGUgIT0gMDoKLSAg
ICAgICAgcmFpc2UgRXhjZXB0aW9uKCdqaGJ1aWxkIGNvbmZpZ3VyZSBmYWlsZWQgd2l0aCByZXR1
cm4gY29kZTogJWknICUgcHJvY2Vzcy5yZXR1cm5jb2RlKQotCi0KLWRlZiB1cGRhdGVfd2Via2l0
Z3RrX2xpYnMoKToKLSAgICBwcm9jZXNzID0gc3VicHJvY2Vzcy5Qb3Blbihjb21tb24udG9wX2xl
dmVsX3BhdGgoJ1Rvb2xzJywgJ1NjcmlwdHMnLCAndXBkYXRlLXdlYmtpdGd0ay1saWJzJykpCi0g
ICAgcHJvY2Vzcy53YWl0KCkKLSAgICBpZiBwcm9jZXNzLnJldHVybmNvZGUgIT0gMDoKLSAgICAg
ICAgcmFpc2UgRXhjZXB0aW9uKCdqaGJ1aWxkIGNvbmZpZ3VyZSBmYWlsZWQgd2l0aCByZXR1cm4g
Y29kZTogJWknICUgcHJvY2Vzcy5yZXR1cm5jb2RlKQotCi0KLWRlZiBlbnN1cmVfamhidWlsZCgp
OgotICAgIGlmIG5vdCBqaGJ1aWxkX2Nsb25lZCgpOgotICAgICAgICBjbG9uZV9qaGJ1aWxkKCkK
LSAgICAgICAgdXBkYXRlX2poYnVpbGQoKQotICAgICAgICBpbnN0YWxsX2poYnVpbGQoKQotICAg
ICAgICB1cGRhdGVfd2Via2l0Z3RrX2xpYnMoKQotICAgIGVsaWYgbm90IGpoYnVpbGRfaW5zdGFs
bGVkKCkgXAotICAgICAgICAgICAgb3Igbm90IGpoYnVpbGRfYXRfZXhwZWN0ZWRfcmV2aXNpb24o
KToKLSAgICAgICAgdXBkYXRlX2poYnVpbGQoKQotICAgICAgICBpbnN0YWxsX2poYnVpbGQoKQot
Ci0KLWVuc3VyZV9qaGJ1aWxkKCkKLQotCi1wcm9jZXNzID0gc3VicHJvY2Vzcy5Qb3Blbihbamhi
dWlsZF9wYXRoLCAnLS1uby1pbnRlcmFjdCcsICctZicsIGNvbW1vbi50b3BfbGV2ZWxfcGF0aCgn
VG9vbHMnLCAnZ3RrJywgJ2poYnVpbGRyYycpLCAncnVuJ10gKyBzeXMuYXJndlsxOl0pCitqaGJ1
aWxkX3dyYXBwZXIgPSBjb21tb24udG9wX2xldmVsX3BhdGgoJ1Rvb2xzJywgJ2poYnVpbGQnLCAn
amhidWlsZC13cmFwcGVyJykKK3Byb2Nlc3MgPSBzdWJwcm9jZXNzLlBvcGVuKFtqaGJ1aWxkX3dy
YXBwZXIsICctLWd0ayddICsgc3lzLmFyZ3ZbMTpdKQogcHJvY2Vzcy53YWl0KCkKIHN5cy5leGl0
KHByb2Nlc3MucmV0dXJuY29kZSkKLQotCi0KZGlmZiAtLWdpdCBhL1Rvb2xzL2poYnVpbGQvamhi
dWlsZC13cmFwcGVyIGIvVG9vbHMvamhidWlsZC9qaGJ1aWxkLXdyYXBwZXIKbmV3IGZpbGUgbW9k
ZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uZDQ4ZGI4NQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xz
L2poYnVpbGQvamhidWlsZC13cmFwcGVyCkBAIC0wLDAgKzEsMTQwIEBACisjIS91c3IvYmluL2Vu
diBweXRob24KKyMgQ29weXJpZ2h0IChDKSAyMDExIElnYWxpYSBTLkwuCisjIENvcHlyaWdodCAo
QykgMjAxMiBHdXN0YXZvIE5vcm9uaGEgU2lsdmEgPGduc0Bnbm9tZS5vcmc+CisjIENvcHlyaWdo
dCAoQykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlvbgorIworIyBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisjIG1vZGlmeSBpdCB1bmRl
ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyMgTGljZW5zZSBh
cyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisjIHZl
cnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy
c2lvbi4KKyMKKyMgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg
aXQgd2lsbCBiZSB1c2VmdWwsCisjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl
dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisjIExlc3NlciBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisjCisjIFlvdSBzaG91bGQgaGF2ZSBy
ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyMgTGljZW5z
ZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0
d2FyZQorIyBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29y
LCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EKKworaW1wb3J0IG9zCitpbXBvcnQgc3VicHJv
Y2VzcworaW1wb3J0IHN5cworCisKK3RvcF9sZXZlbF9kaXIgPSBOb25lCisKKworZGVmIHRvcF9s
ZXZlbF9wYXRoKCphcmdzKToKKyAgICBnbG9iYWwgdG9wX2xldmVsX2RpcgorICAgIGlmIG5vdCB0
b3BfbGV2ZWxfZGlyOgorICAgICAgICB0b3BfbGV2ZWxfZGlyID0gb3MucGF0aC5qb2luKG9zLnBh
dGguZGlybmFtZShfX2ZpbGVfXyksICcuLicsICcuLicpCisgICAgcmV0dXJuIG9zLnBhdGguam9p
bigqKHRvcF9sZXZlbF9kaXIsKSArIGFyZ3MpCisKKworamhidWlsZF9yZXZpc2lvbiA9ICcxZWVk
YzQyM2Y3NWM2MDUyMjRiNDMwNTc5ZTRjMzAzMjkyMTk5NTA3JworCitpbnN0YWxsYXRpb25fcHJl
Zml4ID0gb3MucGF0aC5hYnNwYXRoKHRvcF9sZXZlbF9wYXRoKCdXZWJLaXRCdWlsZCcsICdEZXBl
bmRlbmNpZXMnLCAnUm9vdCcpKQorc291cmNlX3BhdGggPSBvcy5wYXRoLmFic3BhdGgodG9wX2xl
dmVsX3BhdGgoJ1dlYktpdEJ1aWxkJywgJ0RlcGVuZGVuY2llcycsICdTb3VyY2UnKSkKK2poYnVp
bGRfc291cmNlX3BhdGggPSBvcy5wYXRoLmpvaW4oc291cmNlX3BhdGgsICdqaGJ1aWxkJykKK2po
YnVpbGRfcGF0aCA9IHRvcF9sZXZlbF9wYXRoKCdXZWJLaXRCdWlsZCcsICdEZXBlbmRlbmNpZXMn
LCAnUm9vdCcsICdiaW4nLCAnamhidWlsZCcpCitwbGF0Zm9ybSA9IE5vbmU7CisKKworZGVmIGpo
YnVpbGRfaW5zdGFsbGVkKCk6CisgICAgcmV0dXJuIG9zLnBhdGguZXhpc3RzKGpoYnVpbGRfcGF0
aCkKKworCitkZWYgamhidWlsZF9jbG9uZWQoKToKKyAgICByZXR1cm4gb3MucGF0aC5leGlzdHMo
amhidWlsZF9zb3VyY2VfcGF0aCkKKworCitkZWYgamhidWlsZF9hdF9leHBlY3RlZF9yZXZpc2lv
bigpOgorICAgIHByb2Nlc3MgPSBzdWJwcm9jZXNzLlBvcGVuKFsnZ2l0JywgJ3Jldi1saXN0Jywg
J0hFQUReLi4nXSwgY3dkPWpoYnVpbGRfc291cmNlX3BhdGgsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSwgc3RkZXJyPXN1YnByb2Nlc3MuUElQ
RSkKKyAgICBvdXRwdXQsIGVyciA9IHByb2Nlc3MuY29tbXVuaWNhdGUoKQorICAgIGlmIHByb2Nl
c3MucmV0dXJuY29kZSAhPSAwOgorICAgICAgICByYWlzZSBFeGNlcHRpb24oJ2ZhaWxlZCB0byBm
aW5kIGpoYnVpbGQgcmV2aXNpb246ICVzJyAlIGVycikKKworICAgIHJldHVybiBvdXRwdXQuc3Ry
aXAoKSA9PSBqaGJ1aWxkX3JldmlzaW9uCisKKworZGVmIHVwZGF0ZV9qaGJ1aWxkKCk6CisgICAg
cHJvY2VzcyA9IHN1YnByb2Nlc3MuUG9wZW4oWydnaXQnLCAncmVtb3RlJywgJ3VwZGF0ZScsICdv
cmlnaW4nXSwgY3dkPWpoYnVpbGRfc291cmNlX3BhdGgpCisgICAgcHJvY2Vzcy53YWl0KCkKKyAg
ICBpZiBwcm9jZXNzLnJldHVybmNvZGUgIT0gMDoKKyAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCdq
aGJ1aWxkIHJlbW90ZSB1cGRhdGUgb3JpZ2luIGZhaWxlZCB3aXRoIHJldHVybiBjb2RlOiAlaScg
JSBwcm9jZXNzLnJldHVybmNvZGUpCisKKyAgICBwcm9jZXNzID0gc3VicHJvY2Vzcy5Qb3Blbihb
J2dpdCcsICdjaGVja291dCcsICclcycgJSBqaGJ1aWxkX3JldmlzaW9uXSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjd2Q9amhidWlsZF9zb3VyY2VfcGF0aCkKKyAgICBwcm9jZXNz
LndhaXQoKQorICAgIGlmIHByb2Nlc3MucmV0dXJuY29kZSAhPSAwOgorICAgICAgICByYWlzZSBF
eGNlcHRpb24oJ2ZhaWxlZCB0byBjaGVja291dCB0cmVlaXNoICVzOiAlaScgJSAoamhidWlsZF9y
ZXZpc2lvbiwgcHJvY2Vzcy5yZXR1cm5jb2RlKSkKKworCitkZWYgY2xvbmVfamhidWlsZCgpOgor
ICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhzb3VyY2VfcGF0aCk6CisgICAgICAgIG9zLm1ha2Vk
aXJzKHNvdXJjZV9wYXRoKQorICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhpbnN0YWxsYXRpb25f
cHJlZml4KToKKyAgICAgICAgb3MubWFrZWRpcnMoaW5zdGFsbGF0aW9uX3ByZWZpeCkKKworICAg
IHByb2Nlc3MgPSBzdWJwcm9jZXNzLlBvcGVuKFsnZ2l0JywgJ2Nsb25lJywgJ2dpdDovL2dpdC5n
bm9tZS5vcmcvamhidWlsZCddLCBjd2Q9c291cmNlX3BhdGgpCisgICAgcHJvY2Vzcy53YWl0KCkK
KyAgICBpZiBwcm9jZXNzLnJldHVybmNvZGUgIT0gMDoKKyAgICAgICAgcmFpc2UgRXhjZXB0aW9u
KCdqaGJ1aWxkIGdpdCBjbG9uZSBmYWlsZWQgd2l0aCByZXR1cm4gY29kZTogJWknICUgcHJvY2Vz
cy5yZXR1cm5jb2RlKQorCisKK2RlZiBpbnN0YWxsX2poYnVpbGQoKToKKyAgICAjIGpoYnVpbGQg
aXMgcmVhbGx5IHVuaGFwcHkgYWJvdXQgaGF2aW5nIE1BS0UgZGVmaW5lZCB0byBzb21ldGhpbmcg
bGlrZSAnbWFrZSAtajQnCisgICAgIyBzbyB3ZSBqdXN0IHVuZGVmaW5lIGl0IGhlcmUuCisgICAg
ZW52X3dpdGhvdXRfbWFrZSA9IGRpY3Qob3MuZW52aXJvbikKKyAgICBpZiAnTUFLRScgaW4gZW52
X3dpdGhvdXRfbWFrZToKKyAgICAgICAgZGVsIGVudl93aXRob3V0X21ha2VbJ01BS0UnXQorCisg
ICAgcHJvY2VzcyA9IHN1YnByb2Nlc3MuUG9wZW4oWycuL2F1dG9nZW4uc2gnLCAnLS1wcmVmaXg9
JXMnICUgaW5zdGFsbGF0aW9uX3ByZWZpeF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY3dkPWpoYnVpbGRfc291cmNlX3BhdGgsIGVudj1lbnZfd2l0aG91dF9tYWtlKQorICAgIHBy
b2Nlc3Mud2FpdCgpCisgICAgaWYgcHJvY2Vzcy5yZXR1cm5jb2RlICE9IDA6CisgICAgICAgIHJh
aXNlIEV4Y2VwdGlvbignamhidWlsZCBjb25maWd1cmUgZmFpbGVkIHdpdGggcmV0dXJuIGNvZGU6
ICVpJyAlIHByb2Nlc3MucmV0dXJuY29kZSkKKworICAgIHByb2Nlc3MgPSBzdWJwcm9jZXNzLlBv
cGVuKFsnbWFrZScsICdpbnN0YWxsJ10sIGN3ZD1qaGJ1aWxkX3NvdXJjZV9wYXRoLCBlbnY9ZW52
X3dpdGhvdXRfbWFrZSkKKyAgICBwcm9jZXNzLndhaXQoKQorICAgIGlmIHByb2Nlc3MucmV0dXJu
Y29kZSAhPSAwOgorICAgICAgICByYWlzZSBFeGNlcHRpb24oJ2poYnVpbGQgY29uZmlndXJlIGZh
aWxlZCB3aXRoIHJldHVybiBjb2RlOiAlaScgJSBwcm9jZXNzLnJldHVybmNvZGUpCisKKworZGVm
IHVwZGF0ZV93ZWJraXRfbGlic19qaGJ1aWxkKCk6CisgICAgcHJvY2VzcyA9IHN1YnByb2Nlc3Mu
UG9wZW4oW3RvcF9sZXZlbF9wYXRoKCdUb29scycsICdTY3JpcHRzJywgJ3VwZGF0ZS13ZWJraXQt
bGlicy1qaGJ1aWxkJyksICctLScgKyBwbGF0Zm9ybV0pCisgICAgcHJvY2Vzcy53YWl0KCkKKyAg
ICBpZiBwcm9jZXNzLnJldHVybmNvZGUgIT0gMDoKKyAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCdq
aGJ1aWxkIGNvbmZpZ3VyZSBmYWlsZWQgd2l0aCByZXR1cm4gY29kZTogJWknICUgcHJvY2Vzcy5y
ZXR1cm5jb2RlKQorCisKK2RlZiBkZXRlcm1pbmVfcGxhdGZvcm0oKToKKyAgICBpZiAnLS1lZmwn
IGluIHN5cy5hcmd2OgorICAgICAgICByZXR1cm4gImVmbCI7CisgICAgaWYgJy0tZ3RrJyBpbiBz
eXMuYXJndjoKKyAgICAgICAgcmV0dXJuICJndGsiOworICAgIHJhaXNlIFZhbHVlRXJyb3IoJ05v
IHBsYXRmb3JtIHNwZWNpZmllZCBmb3IgamhidWlsZC13cmFwcGVyLicpCisKKworZGVmIGVuc3Vy
ZV9qaGJ1aWxkKCk6CisgICAgaWYgbm90IGpoYnVpbGRfY2xvbmVkKCk6CisgICAgICAgIGNsb25l
X2poYnVpbGQoKQorICAgICAgICB1cGRhdGVfamhidWlsZCgpCisgICAgICAgIGluc3RhbGxfamhi
dWlsZCgpCisgICAgICAgIHVwZGF0ZV93ZWJraXRfbGlic19qaGJ1aWxkKCkKKyAgICBlbGlmIG5v
dCBqaGJ1aWxkX2luc3RhbGxlZCgpIFwKKyAgICAgICAgICAgIG9yIG5vdCBqaGJ1aWxkX2F0X2V4
cGVjdGVkX3JldmlzaW9uKCk6CisgICAgICAgIHVwZGF0ZV9qaGJ1aWxkKCkKKyAgICAgICAgaW5z
dGFsbF9qaGJ1aWxkKCkKKwordHJ5OgorICAgIHBsYXRmb3JtID0gZGV0ZXJtaW5lX3BsYXRmb3Jt
KCkKK2V4Y2VwdCBWYWx1ZUVycm9yIGFzIGU6CisgICAgc3lzLmV4aXQoZSkKK2Vuc3VyZV9qaGJ1
aWxkKCkKKworcHJvY2VzcyA9IHN1YnByb2Nlc3MuUG9wZW4oW2poYnVpbGRfcGF0aCwgJy0tbm8t
aW50ZXJhY3QnLCAnLWYnLCB0b3BfbGV2ZWxfcGF0aCgnVG9vbHMnLCBwbGF0Zm9ybSwgJ2poYnVp
bGRyYycpLCAncnVuJ10gKyBzeXMuYXJndlsyOl0pCitwcm9jZXNzLndhaXQoKQorc3lzLmV4aXQo
cHJvY2Vzcy5yZXR1cm5jb2RlKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>