<?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>104240</bug_id>
          
          <creation_ts>2012-12-06 01:47:51 -0800</creation_ts>
          <short_desc>[CMake] Add CMake style checker</short_desc>
          <delta_ts>2012-12-09 20:57:44 -0800</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>Unspecified</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>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Halton Huo">halton.huo</reporter>
          <assigned_to name="Halton Huo">halton.huo</assigned_to>
          <cc>abarth</cc>
    
    <cc>cdumez</cc>
    
    <cc>dpranke</cc>
    
    <cc>eric</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>laszlo.gombos</cc>
    
    <cc>levin</cc>
    
    <cc>rakuco</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>784763</commentid>
    <comment_count>0</comment_count>
    <who name="Halton Huo">halton.huo</who>
    <bug_when>2012-12-06 01:47:51 -0800</bug_when>
    <thetext>Refer to bug #103605, the cmake files(CMakeLists.txt and *.cmake) are unified by rules that we agreed, this bug is to add CMake style checker</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>784781</commentid>
    <comment_count>1</comment_count>
      <attachid>177977</attachid>
    <who name="Halton Huo">halton.huo</who>
    <bug_when>2012-12-06 02:18:14 -0800</bug_when>
    <thetext>Created attachment 177977
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>784788</commentid>
    <comment_count>2</comment_count>
      <attachid>177981</attachid>
    <who name="Halton Huo">halton.huo</who>
    <bug_when>2012-12-06 02:32:25 -0800</bug_when>
    <thetext>Created attachment 177981
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>784924</commentid>
    <comment_count>3</comment_count>
      <attachid>177981</attachid>
    <who name="Laszlo Gombos">laszlo.gombos</who>
    <bug_when>2012-12-06 07:06:09 -0800</bug_when>
    <thetext>Comment on attachment 177981
Patch

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

I think the style checker would need some unittests just like the existing checkers. 

It would be great if someone else with more experience in the style checkers could help the review. Overall the direction looks good to me.

&gt; Tools/Scripts/webkitpy/style/checkers/cmake.py:31
&gt; +

Extra line ?

&gt; Tools/Scripts/webkitpy/style/checkers/cmake.py:41
&gt; +        self._no_space_cmds = self._read_file_ignore_comments(
&gt; +                  os.path.join(basedir, &quot;cmake-commands-no-space.txt&quot;))
&gt; +        self._one_space_cmds = self._read_file_ignore_comments(
&gt; +                  os.path.join(basedir, &quot;cmake-commands-one-space.txt&quot;))

I think these lists should be in the cmake.py file as that is more consistent with the existent checkers.

&gt; Tools/Scripts/webkitpy/style/checkers/cmake.py:55
&gt; +            self._handle_style_error(line_number, &apos;whitespace/tailing&apos;, 5,
&gt; +                                     &apos;No tailing spaces&apos;)

tailing -&gt; trailing

&gt; Tools/Scripts/webkitpy/style/checkers/cmake.py:86
&gt; +            if re.search(&apos;(^|\ +)&apos; + t.upper() + &apos;\ *\(&apos;, line_content):
&gt; +                msg = &apos;Use lowercase command &quot;&apos; + t + &apos;&quot; instead of &quot;&apos; + t.upper() + &apos;&quot;&apos;

What if someone would use mixed-case - e.g. &quot;If&quot; ? It seems to me that this rule would not catch it.

&gt; Tools/Scripts/webkitpy/style/checkers/cmake.py:88
&gt; +            if re.search(&apos;(^|\ +)&apos; + t + &apos;\ +\(&apos;, line_content):

Wouldn&apos;t t.lower() be better here ?

&gt; Tools/Scripts/webkitpy/style/checkers/cmake.py:96
&gt; +            if re.search(&apos;(^|\ +)&apos; + t.upper() + &apos;\ *\(&apos;, line_content):
&gt; +                msg = &apos;Use lowercase command &quot;&apos; + t + &apos;&quot; instead of &quot;&apos; + t.upper() + &apos;&quot;&apos;

Ditto - What if someone would use mixed-case - e.g. &quot;If&quot; ? It seems to me that this rule would not catch it.

Can this rule somehow shared, instead of repeated ?

&gt; Tools/Scripts/webkitpy/style/checkers/cmake.py:98
&gt; +            if re.search(&apos;(^|\ +)&apos; + t + &apos;(\(|\ \ +\()&apos;, line_content):

Ditto - Wouldn&apos;t t.lower() be better here ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>785766</commentid>
    <comment_count>4</comment_count>
      <attachid>178187</attachid>
    <who name="Halton Huo">halton.huo</who>
    <bug_when>2012-12-07 02:36:35 -0800</bug_when>
    <thetext>Created attachment 178187
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>785769</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-07 02:41:46 -0800</bug_when>
    <thetext>Attachment 178187 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Tools/ChangeLog&apos;, u&apos;Tools/Scripts/webkitpy...&quot; exit_code: 1
Tools/Scripts/webkitpy/style/checkers/cmake_unittest_input.cmake:3:  Line contains tab character.  [whitespace/tab] [5]
Tools/Scripts/webkitpy/style/checkers/cmake_unittest_input.cmake:2:  Use lowercase command &quot;if&quot;  [command/lowercase] [5]
Tools/Scripts/webkitpy/style/checkers/cmake_unittest_input.cmake:4:  No trailing spaces  [whitespace/trailing] [5]
Tools/Scripts/webkitpy/style/checkers/cmake_unittest_input.cmake:5:  No space after &quot;(&quot;  [whitespace/parentheses] [5]
Tools/Scripts/webkitpy/style/checkers/cmake_unittest_input.cmake:6:  No space before &quot;)&quot;  [whitespace/parentheses] [5]
Tools/Scripts/webkitpy/style/checkers/cmake_unittest_input.cmake:7:  Use lowercase command &quot;message&quot;  [command/lowercase] [5]
Tools/Scripts/webkitpy/style/checkers/cmake_unittest_input.cmake:8:  Use lowercase command &quot;message&quot;  [command/lowercase] [5]
Tools/Scripts/webkitpy/style/checkers/cmake_unittest_input.cmake:10:  Use lowercase command &quot;endif&quot;  [command/lowercase] [5]
Tools/Scripts/webkitpy/style/checkers/cmake_unittest_input.cmake:12:  One space between command &quot;if&quot; and its parentheses, should be &quot;if (&quot;  [whitespace/parentheses] [5]
Tools/Scripts/webkitpy/style/checkers/cmake_unittest_input.cmake:15:  No space between command &quot;macro&quot; and its parentheses, should be &quot;macro(&quot;  [whitespace/parentheses] [5]
Tools/Scripts/webkitpy/style/checkers/cmake_unittest_input.cmake:16:  Use lowercase command &quot;endmacro&quot;  [command/lowercase] [5]
Tools/Scripts/webkitpy/style/checkers/cmake_unittest_input.cmake:18:  No space between command &quot;function&quot; and its parentheses, should be &quot;function(&quot;  [whitespace/parentheses] [5]
Total errors found: 12 in 5 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>785772</commentid>
    <comment_count>6</comment_count>
    <who name="Halton Huo">halton.huo</who>
    <bug_when>2012-12-07 02:45:17 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; &gt; Tools/Scripts/webkitpy/style/checkers/cmake.py:31
&gt; &gt; +
&gt; 
&gt; Extra line ?
Are you suggesting to leave 3 empty line here? python checker will report error. I check with python.py, it is 2 empty lines.

All issues are address in new patch #178187 except the above one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>785984</commentid>
    <comment_count>7</comment_count>
      <attachid>178187</attachid>
    <who name="Laszlo Gombos">laszlo.gombos</who>
    <bug_when>2012-12-07 10:53:14 -0800</bug_when>
    <thetext>Comment on attachment 178187
Patch

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

Almost there, but I think the patch itself should pass the style check; r- for that.

&gt; Tools/Scripts/webkitpy/style/checkers/cmake_unittest_input.cmake:1
&gt; +# This file is sample input for cmake_unittest.py and includes below problems:

It would be better to include the test input inside cmake_unittest.py and not as a separate file - not necessary as one big buffer but as a serious of unit tests like it is done for the other checkers (see for example changelog_unittest.py). This would also avoid the problem that your negative tests in the cmake_unittest*.cmake fail on the style check.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>786324</commentid>
    <comment_count>8</comment_count>
      <attachid>178313</attachid>
    <who name="Halton Huo">halton.huo</who>
    <bug_when>2012-12-07 17:36:19 -0800</bug_when>
    <thetext>Created attachment 178313
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>786411</commentid>
    <comment_count>9</comment_count>
      <attachid>178313</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-12-07 21:14:30 -0800</bug_when>
    <thetext>Comment on attachment 178313
Patch

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

&gt; Tools/Scripts/webkitpy/style/checker.py:581
&gt; +        elif ((file_extension == _CMAKE_FILE_EXTENSION) or os.path.basename(file_path) == &apos;CMakeLists.txt&apos;):

Some day we should move all this code to use the webkitpy.common.system abstractions (like FileSystem) to make this code more easily unittestable.  (This is unrelated to your patch.)

&gt; Tools/Scripts/webkitpy/style/checkers/cmake.py:29
&gt; +import os
&gt; +import re
&gt; +import sys

os and sys seem unused?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>786505</commentid>
    <comment_count>10</comment_count>
      <attachid>178353</attachid>
    <who name="Halton Huo">halton.huo</who>
    <bug_when>2012-12-08 08:05:22 -0800</bug_when>
    <thetext>Created attachment 178353
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>786506</commentid>
    <comment_count>11</comment_count>
    <who name="Halton Huo">halton.huo</who>
    <bug_when>2012-12-08 08:08:12 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; Created an attachment (id=178353) [details]
&gt; Patch
Rebase to trunk@137030 and remove unused import os and sys(Eric&apos;s comment #9)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>786536</commentid>
    <comment_count>12</comment_count>
      <attachid>178353</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-12-08 09:53:51 -0800</bug_when>
    <thetext>Comment on attachment 178353
Patch

This seems like a totally reasonable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>786694</commentid>
    <comment_count>13</comment_count>
      <attachid>178353</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-08 23:47:54 -0800</bug_when>
    <thetext>Comment on attachment 178353
Patch

Clearing flags on attachment: 178353

Committed r137057: &lt;http://trac.webkit.org/changeset/137057&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>786695</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-08 23:48:00 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>786921</commentid>
    <comment_count>15</comment_count>
    <who name="Halton Huo">halton.huo</who>
    <bug_when>2012-12-09 18:31:24 -0800</bug_when>
    <thetext>Just let you know, I run check-webkit-style at trunk@137102(By adding a empty line for all CMakeLists.txt and .cmake files), no errors found now. So only one thing left is my TODO for indent checking.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>177977</attachid>
            <date>2012-12-06 02:18:14 -0800</date>
            <delta_ts>2012-12-06 02:32:09 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-104240-20121206181819.patch</filename>
            <type>text/plain</type>
            <size>11600</size>
            <attacher name="Halton Huo">halton.huo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM2NzkwCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNWZmN2FjNWIzMTMyOWJkZDgzYjM0YTZjZjI1MzJmYzkw
YjUxNTY4ZC4uMTYzMDdhOGU0Mjg2NGYyNDBiOWZhZjczMjY1NjU2Nzk1NGI0NGYwZSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMy
IEBACisyMDEyLTEyLTA2ICBIYWx0b24gSHVvICA8aGFsdG9uLmh1b0BpbnRlbC5jb20+CisKKyAg
ICAgICAgW0NNYWtlXSBBZGQgQ01ha2Ugc3R5bGUgY2hla2VyCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDQyNDAKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgQ01ha2Ugc3R5bGUgY2hlY2tlciBpcyBm
b2xsb3dlZCBieSBleGlzdGluZyBzdHlsZSBjaGVja2VycyBsaWtlIGNwcCwgeG1sLgorCisgICAg
ICAgICogU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2VyLnB5OiAKKyAgICAgICAgKEZpbGVU
eXBlKTogQWRkIENNQUtFIHR5cGUKKyAgICAgICAgKENoZWNrZXJEaXNwYXRjaGVyLl9maWxlX3R5
cGUpOiByZXR1cm4gQ01BS0UgdHlwZSBmb3IgLmNtYWtlIGZpbGVzIGFuZCBDTWFrZUxpc3RzLnR4
dAorICAgICAgICAoQ2hlY2tlckRpc3BhdGNoZXIuX2NyZWF0ZV9jaGVja2VyKTogQ3JlYXRlIENN
YWtlQ2hla2VyIHdoZW4gRmlsZVR5cGUuQ01BS0UKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5
L3N0eWxlL2NoZWNrZXJzL2NtYWtlLWNvbW1hbmRzLW5vLXNwYWNlLnR4dDogQWRkZWQuCisgICAg
ICAgICAgbm9uLWNvbmRpdGlvbmFsIENNYWtlIGNvbW1hbmRzIGxpc3Qgc3VjaCBhcyBzZXQsIG1l
c3NhZ2UsIGxpc3QsIGV0Yy4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNr
ZXJzL2NtYWtlLWNvbW1hbmRzLW9uZS1zcGFjZS50eHQ6IEFkZGVkLgorICAgICAgICAgIGNvbmRp
dGlvbmFsIENNYWtlIGNvbW1hbmRzIGxpc3Qgc3VjaCBhcyBpZiwgZm9yZWFjaCwgd2hpbGUsIGV0
Yy4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL2NtYWtlLnB5OiBB
ZGRlZC4KKyAgICAgICAgKENNYWtlQ2hlY2tlcik6CisgICAgICAgIChDTWFrZUNoZWNrZXIuX19p
bml0X18pOiBpbml0IHNvbWUgdmFsdWVzCisgICAgICAgIChDTWFrZUNoZWNrZXIuY2hlY2spOiBT
dHlsZSBjaGVja2VyIGludGVyZmFjZQorICAgICAgICAoQ01ha2VDaGVja2VyLl9wcm9jZXNzX2xp
bmUpOiBwcm9jZXNzIGxpbmUtYnktbGluZQorICAgICAgICAoQ01ha2VDaGVja2VyLl9yZWFkX2Zp
bGVfaWdub3JlX2NvbW1lbnRzKTogZ2V0IGNvbW1hbmRzIGxpc3QgCisgICAgICAgIChDTWFrZUNo
ZWNrZXIuX2NoZWNrX25vX3NwYWNlX2NtZHMpOiBjaGVjayBzdHlsZSBmb3IgY29tbWFuZHMgaW4K
KyAgICAgICAgY21ha2UtY29tbWFuZHMtbm8tc3BhY2UudHh0CisgICAgICAgIChDTWFrZUNoZWNr
ZXIuX2NoZWNrX29uZV9zcGFjZV9jbWRzKTogY2hlY2sgc3R5bGUgZm9yIGNvbW1hbmRzIGluCisg
ICAgICAgIGNtYWtlLWNvbW1hbmRzLW9uZS1zcGFjZS50eHQKKyAgICAgICAgKENNYWtlQ2hlY2tl
ci5fY2hlY2tfaW5kZW50KTogYSBwbGFjZWhvbGRlciwgbGVhdmUgYSBUT0RPCisKIDIwMTItMTIt
MDUgIEhhbHRvbiBIdW8gIDxoYWx0b24uaHVvQGludGVsLmNvbT4KIAogICAgICAgICBbQ01ha2Vd
IFVuaWZ5IGNvZGluZyBzdHlsZSBmb3IgQ01ha2UgZmlsZXMKZGlmZiAtLWdpdCBhL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlci5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
c3R5bGUvY2hlY2tlci5weQppbmRleCA3YTE1MThiNWJjOTQzZmVjODI0ZmMxOTA4MWQ5NDY0Y2Y1
MjIyZDA3Li45Mzk1OTQ3MWZmNjIyNDZkMmMyOWFjMTIxYjg2YzFmNTRkYjY1NzQzIDEwMDY0NAot
LS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXIucHkKKysrIGIvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2VyLnB5CkBAIC0zOSw2ICszOSw3IEBAIGZyb20g
Y2hlY2tlcnMuY29tbW9uIGltcG9ydCBjYXRlZ29yaWVzIGFzIENvbW1vbkNhdGVnb3JpZXMKIGZy
b20gY2hlY2tlcnMuY29tbW9uIGltcG9ydCBDYXJyaWFnZVJldHVybkNoZWNrZXIKIGZyb20gY2hl
Y2tlcnMuY2hhbmdlbG9nIGltcG9ydCBDaGFuZ2VMb2dDaGVja2VyCiBmcm9tIGNoZWNrZXJzLmNw
cCBpbXBvcnQgQ3BwQ2hlY2tlcgorZnJvbSBjaGVja2Vycy5jbWFrZSBpbXBvcnQgQ01ha2VDaGVj
a2VyCiBmcm9tIGNoZWNrZXJzLmpzb25jaGVja2VyIGltcG9ydCBKU09OQ2hlY2tlcgogZnJvbSBj
aGVja2Vycy5wbmcgaW1wb3J0IFBOR0NoZWNrZXIKIGZyb20gY2hlY2tlcnMucHl0aG9uIGltcG9y
dCBQeXRob25DaGVja2VyCkBAIC0zMDYsNiArMzA3LDggQEAgX1hNTF9GSUxFX0VYVEVOU0lPTlMg
PSBbCiAKIF9QTkdfRklMRV9FWFRFTlNJT04gPSAncG5nJwogCitfQ01BS0VfRklMRV9FWFRFTlNJ
T04gPSAnY21ha2UnCisKICMgRmlsZXMgdG8gc2tpcCB0aGF0IGFyZSBsZXNzIG9idmlvdXMuCiAj
CiAjIFNvbWUgZmlsZXMgc2hvdWxkIGJlIHNraXBwZWQgd2hlbiBjaGVja2luZyBzdHlsZS4gRm9y
IGV4YW1wbGUsCkBAIC00OTYsNiArNDk5LDcgQEAgY2xhc3MgRmlsZVR5cGU6CiAgICAgV0FUQ0hM
SVNUID0gNwogICAgIFhNTCA9IDgKICAgICBYQ09ERVBST0ogPSA5CisgICAgQ01BS0UgPSAxMAog
CiAKIGNsYXNzIENoZWNrZXJEaXNwYXRjaGVyKG9iamVjdCk6CkBAIC01NzQsNiArNTc4LDggQEAg
Y2xhc3MgQ2hlY2tlckRpc3BhdGNoZXIob2JqZWN0KToKICAgICAgICAgICAgIHJldHVybiBGaWxl
VHlwZS5YQ09ERVBST0oKICAgICAgICAgZWxpZiBmaWxlX2V4dGVuc2lvbiA9PSBfUE5HX0ZJTEVf
RVhURU5TSU9OOgogICAgICAgICAgICAgcmV0dXJuIEZpbGVUeXBlLlBORworICAgICAgICBlbGlm
ICgoZmlsZV9leHRlbnNpb24gPT0gX0NNQUtFX0ZJTEVfRVhURU5TSU9OKSBvciBvcy5wYXRoLmJh
c2VuYW1lKGZpbGVfcGF0aCkgPT0gJ0NNYWtlTGlzdHMudHh0Jyk6CisgICAgICAgICAgICByZXR1
cm4gRmlsZVR5cGUuQ01BS0UKICAgICAgICAgZWxpZiAoKG5vdCBmaWxlX2V4dGVuc2lvbiBhbmQg
b3MucGF0aC5qb2luKCJUb29scyIsICJTY3JpcHRzIikgaW4gZmlsZV9wYXRoKSBvcgogICAgICAg
ICAgICAgICBmaWxlX2V4dGVuc2lvbiBpbiBfVEVYVF9GSUxFX0VYVEVOU0lPTlMgb3Igb3MucGF0
aC5iYXNlbmFtZShmaWxlX3BhdGgpID09ICdUZXN0RXhwZWN0YXRpb25zJyk6CiAgICAgICAgICAg
ICByZXR1cm4gRmlsZVR5cGUuVEVYVApAQCAtNjA0LDYgKzYxMCw4IEBAIGNsYXNzIENoZWNrZXJE
aXNwYXRjaGVyKG9iamVjdCk6CiAgICAgICAgICAgICBjaGVja2VyID0gWGNvZGVQcm9qZWN0Rmls
ZUNoZWNrZXIoZmlsZV9wYXRoLCBoYW5kbGVfc3R5bGVfZXJyb3IpCiAgICAgICAgIGVsaWYgZmls
ZV90eXBlID09IEZpbGVUeXBlLlBORzoKICAgICAgICAgICAgIGNoZWNrZXIgPSBQTkdDaGVja2Vy
KGZpbGVfcGF0aCwgaGFuZGxlX3N0eWxlX2Vycm9yKQorICAgICAgICBlbGlmIGZpbGVfdHlwZSA9
PSBGaWxlVHlwZS5DTUFLRToKKyAgICAgICAgICAgIGNoZWNrZXIgPSBDTWFrZUNoZWNrZXIoZmls
ZV9wYXRoLCBoYW5kbGVfc3R5bGVfZXJyb3IpCiAgICAgICAgIGVsaWYgZmlsZV90eXBlID09IEZp
bGVUeXBlLlRFWFQ6CiAgICAgICAgICAgICBiYXNlbmFtZSA9IG9zLnBhdGguYmFzZW5hbWUoZmls
ZV9wYXRoKQogICAgICAgICAgICAgaWYgYmFzZW5hbWUgPT0gJ1Rlc3RFeHBlY3RhdGlvbnMnOgpk
aWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy9jbWFrZS1j
b21tYW5kcy1uby1zcGFjZS50eHQgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNr
ZXJzL2NtYWtlLWNvbW1hbmRzLW5vLXNwYWNlLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45OTBmMGNlODFhOWYy
YWJkMmM2ZTA0MmI4NDdhYjM0ZWQ0ODkyZmQyCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy9jbWFrZS1jb21tYW5kcy1uby1zcGFjZS50eHQK
QEAgLTAsMCArMSw3NyBAQAorIyBHZXQgZnJvbSBsYXRlc3QgY29tbWFuZHMgc2VjdGlvbiBvZiBD
TWFrZSBkb2N1bWVudCAKKyMgTm93IGl0IGlzIGdlbmVyYXRlZCBmcm9tCisjIGh0dHA6Ly93d3cu
Y21ha2Uub3JnL2NtYWtlL2hlbHAvdjIuOC4xMC9jbWFrZS5odG1sI3NlY3Rpb25fQ29tbWFuZHMK
KyMgVGhlIGNvbmRpdGlvbmFsIGNvbW1hbmRzIGxpa2UgaWYsIGVsc2UsIGVuZGlmLCBmb3JlYWNo
LCBlbmRmb3JlYWNoLAorIyB3aGlsZSwgZW5kd2hpbGUgYW5kIGJyZWFrIGFyZSBzYXZlZCBpbiBj
bWFrZS1jb21tYW5kcy1vbmUtc3BhY2UudHh0CithZGRfY3VzdG9tX2NvbW1hbmQKK2FkZF9jdXN0
b21fdGFyZ2V0CithZGRfZGVmaW5pdGlvbnMKK2FkZF9kZXBlbmRlbmNpZXMKK2FkZF9leGVjdXRh
YmxlCithZGRfbGlicmFyeQorYWRkX3N1YmRpcmVjdG9yeQorYWRkX3Rlc3QKK2F1eF9zb3VyY2Vf
ZGlyZWN0b3J5CitidWlsZF9jb21tYW5kCitjbWFrZV9taW5pbXVtX3JlcXVpcmVkCitjbWFrZV9w
b2xpY3kKK2NvbmZpZ3VyZV9maWxlCitjcmVhdGVfdGVzdF9zb3VyY2VsaXN0CitkZWZpbmVfcHJv
cGVydHkKK2VuYWJsZV9sYW5ndWFnZQorZW5hYmxlX3Rlc3RpbmcKK2VuZGZ1bmN0aW9uCitlbmRt
YWNybworZXhlY3V0ZV9wcm9jZXNzCitleHBvcnQKK2ZpbGUKK2ZpbmRfZmlsZQorZmluZF9saWJy
YXJ5CitmaW5kX3BhY2thZ2UKK2ZpbmRfcGF0aAorZmluZF9wcm9ncmFtCitmbHRrX3dyYXBfdWkK
K2Z1bmN0aW9uCitnZXRfY21ha2VfcHJvcGVydHkKK2dldF9kaXJlY3RvcnlfcHJvcGVydHkKK2dl
dF9maWxlbmFtZV9jb21wb25lbnQKK2dldF9wcm9wZXJ0eQorZ2V0X3NvdXJjZV9maWxlX3Byb3Bl
cnR5CitnZXRfdGFyZ2V0X3Byb3BlcnR5CitnZXRfdGVzdF9wcm9wZXJ0eQoraW5jbHVkZQoraW5j
bHVkZV9kaXJlY3RvcmllcworaW5jbHVkZV9leHRlcm5hbF9tc3Byb2plY3QKK2luY2x1ZGVfcmVn
dWxhcl9leHByZXNzaW9uCitpbnN0YWxsCitsaW5rX2RpcmVjdG9yaWVzCitsaXN0Citsb2FkX2Nh
Y2hlCitsb2FkX2NvbW1hbmQKK21hY3JvCittYXJrX2FzX2FkdmFuY2VkCittYXRoCittZXNzYWdl
CitvcHRpb24KK3Byb2plY3QKK3F0X3dyYXBfY3BwCitxdF93cmFwX3VpCityZW1vdmVfZGVmaW5p
dGlvbnMKK3JldHVybgorc2VwYXJhdGVfYXJndW1lbnRzCitzZXQKK3NldF9kaXJlY3RvcnlfcHJv
cGVydGllcworc2V0X3Byb3BlcnR5CitzZXRfc291cmNlX2ZpbGVzX3Byb3BlcnRpZXMKK3NldF90
YXJnZXRfcHJvcGVydGllcworc2V0X3Rlc3RzX3Byb3BlcnRpZXMKK3NpdGVfbmFtZQorc291cmNl
X2dyb3VwCitzdHJpbmcKK3RhcmdldF9saW5rX2xpYnJhcmllcwordHJ5X2NvbXBpbGUKK3RyeV9y
dW4KK3Vuc2V0Cit2YXJpYWJsZV93YXRjaAorI0ZvbGxvd2luZyBhcmUgbm90IGluIGNtYWtlIGNv
bW1hbmRzIHNlY3Rpb24sIGJ1dCBpdCBpcyBidW5kbGVkIHdpdGggY21ha2UKK3BrZ19jaGVja19t
b2R1bGVzCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJz
L2NtYWtlLWNvbW1hbmRzLW9uZS1zcGFjZS50eHQgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3N0
eWxlL2NoZWNrZXJzL2NtYWtlLWNvbW1hbmRzLW9uZS1zcGFjZS50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGE2
ODhhMTVjZmIwNTVlNzI2NDA5MjNiNjgxNTcxNGU3YThhZDVmYgotLS0gL2Rldi9udWxsCisrKyBi
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvY21ha2UtY29tbWFuZHMtb25l
LXNwYWNlLnR4dApAQCAtMCwwICsxLDkgQEAKK2lmCitlbHNlCitlbHNlaWYKK2VuZGlmCitmb3Jl
YWNoCitlbmRmb3JlYWNoCit3aGlsZQorZW5kd2hpbGUKK2JyZWFrCmRpZmYgLS1naXQgYS9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL2NtYWtlLnB5IGIvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy9jbWFrZS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hNmZmOWE1ZjZi
ZmIzZjk0MmNhYzYxZjk0MTA5ZGZjNzZhYWNmNDAxCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy9jbWFrZS5weQpAQCAtMCwwICsxLDEwNCBA
QAorIyBDb3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
IworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuICBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xE
RVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKwor
CisiIiJTdXBwb3J0cyBjaGVja2luZyBXZWJLaXQgc3R5bGUgaW4gY21ha2UgZmlsZXMuKC5jbWFr
ZSwgQ01ha2VMaXN0cy50eHQpIiIiCisKK2ltcG9ydCBvcworaW1wb3J0IHJlCitpbXBvcnQgc3lz
CisKKworY2xhc3MgQ01ha2VDaGVja2VyKG9iamVjdCk6CisgICAgIiIiUHJvY2Vzc2VzIENNYWtl
IGxpbmVzIGZvciBjaGVja2luZyBzdHlsZS4iIiIKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBm
aWxlX3BhdGgsIGhhbmRsZV9zdHlsZV9lcnJvcik6CisgICAgICAgIHNlbGYuX2hhbmRsZV9zdHls
ZV9lcnJvciA9IGhhbmRsZV9zdHlsZV9lcnJvcgorICAgICAgICBiYXNlZGlyID0gb3MucGF0aC5k
aXJuYW1lKG9zLnBhdGguYWJzcGF0aChfX2ZpbGVfXykpCisgICAgICAgIHNlbGYuX25vX3NwYWNl
X2NtZHMgPSBzZWxmLl9yZWFkX2ZpbGVfaWdub3JlX2NvbW1lbnRzKAorICAgICAgICAgICAgICAg
ICAgb3MucGF0aC5qb2luKGJhc2VkaXIsICJjbWFrZS1jb21tYW5kcy1uby1zcGFjZS50eHQiKSkK
KyAgICAgICAgc2VsZi5fb25lX3NwYWNlX2NtZHMgPSBzZWxmLl9yZWFkX2ZpbGVfaWdub3JlX2Nv
bW1lbnRzKAorICAgICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKGJhc2VkaXIsICJjbWFrZS1j
b21tYW5kcy1vbmUtc3BhY2UudHh0IikpCisKKyAgICBkZWYgY2hlY2soc2VsZiwgbGluZXMpOgor
ICAgICAgICBzZWxmLl9udW1fbGluZXMgPSBsZW4obGluZXMpCisgICAgICAgIGZvciBsIGluIHhy
YW5nZShzZWxmLl9udW1fbGluZXMpOgorICAgICAgICAgICAgc2VsZi5fcHJvY2Vzc19saW5lKGwg
KyAxLCBsaW5lc1tsXSkKKworICAgIGRlZiBfcHJvY2Vzc19saW5lKHNlbGYsIGxpbmVfbnVtYmVy
LCBsaW5lX2NvbnRlbnQpOgorICAgICAgICBpZiBsaW5lX2NvbnRlbnQuZmluZCgnXHQnKSAhPSAt
MToKKyAgICAgICAgICAgIHNlbGYuX2hhbmRsZV9zdHlsZV9lcnJvcihsaW5lX251bWJlciwgJ3do
aXRlc3BhY2UvdGFiJywgNSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAn
VGFiIGZvdW5kOyBiZXR0ZXIgdG8gdXNlIHNwYWNlcycpCisgICAgICAgIGwgPSBsaW5lX2NvbnRl
bnQuZXhwYW5kdGFicyg0KQorICAgICAgICBpZiAobGVuKGwpID4gMCkgYW5kIChsW2xlbihsKSAt
IDFdKSA9PSAnICc6CisgICAgICAgICAgICBzZWxmLl9oYW5kbGVfc3R5bGVfZXJyb3IobGluZV9u
dW1iZXIsICd3aGl0ZXNwYWNlL3RhaWxpbmcnLCA1LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICdObyB0YWlsaW5nIHNwYWNlcycpCisgICAgICAgICMgY2hlY2sgY29tbWFu
ZCBsaWtlIG1lc3NhZ2UoICJ0ZXN0aW5nIikKKyAgICAgICAgaWYgcmUuc2VhcmNoKCdcKFwgKycs
IGwpOgorICAgICAgICAgICAgc2VsZi5faGFuZGxlX3N0eWxlX2Vycm9yKGxpbmVfbnVtYmVyLCAn
d2hpdGVzcGFjZS9wYXJlbnRoZXNlcycsIDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJ05vIHNwYWNlIGFmdGVyICIoIicpCisgICAgICAgICMgY2hlY2sgY29tbWFuZCBs
aWtlIG1lc3NhZ2UoInRlc3RpbmciICkKKyAgICAgICAgaWYgcmUuc2VhcmNoKCdcICtcKScsIGwp
IGFuZCBub3QgcmUuc2VhcmNoKCdeXCArXCkkJywgbCk6CisgICAgICAgICAgICBzZWxmLl9oYW5k
bGVfc3R5bGVfZXJyb3IobGluZV9udW1iZXIsICd3aGl0ZXNwYWNlL3BhcmVudGhlc2VzJywgNSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnTm8gc3BhY2UgYmVmb3JlICIp
IicpCisgICAgICAgIHNlbGYuX2NoZWNrX25vX3NwYWNlX2NtZHMobGluZV9udW1iZXIsIGwpCisg
ICAgICAgIHNlbGYuX2NoZWNrX29uZV9zcGFjZV9jbWRzKGxpbmVfbnVtYmVyLCBsKQorICAgICAg
ICBzZWxmLl9jaGVja19pbmRlbnQobGluZV9udW1iZXIsIGxpbmVfY29udGVudCkKKworICAgIGRl
ZiBfcmVhZF9maWxlX2lnbm9yZV9jb21tZW50cyhzZWxmLCBmaWxlbmFtZSk6CisgICAgICAgIHRy
eToKKyAgICAgICAgICAgIGYgPSBvcGVuKGZpbGVuYW1lKQorICAgICAgICBleGNlcHQgSU9FcnJv
ciwgbXNnOgorICAgICAgICAgICAgcHJpbnQgPj4gc3lzLnN0ZGVyciwgbXNnCisgICAgICAgICAg
ICByZXR1cm4KKyAgICAgICAgcmV0X3ZhbCA9IFtdCisgICAgICAgIGZvciBsaW5lIGluIGYucmVh
ZGxpbmVzKCk6CisgICAgICAgICAgICBsaSA9IGxpbmUuc3RyaXAoKQorICAgICAgICAgICAgaWYg
bm90IGxpLnN0YXJ0c3dpdGgoIiMiKToKKyAgICAgICAgICAgICAgICByZXRfdmFsLmFwcGVuZChs
aS5sb3dlcigpKQorICAgICAgICBmLmNsb3NlKCkKKyAgICAgICAgcmV0dXJuIHJldF92YWwKKwor
ICAgIGRlZiBfY2hlY2tfbm9fc3BhY2VfY21kcyhzZWxmLCBsaW5lX251bWJlciwgbGluZV9jb250
ZW50KToKKyAgICAgICAgIyBjaGVjayBjb21tYW5kIGxpa2UgIlNFVCAgICAoIgorICAgICAgICBm
b3IgdCBpbiBzZWxmLl9ub19zcGFjZV9jbWRzOgorICAgICAgICAgICAgaWYgcmUuc2VhcmNoKCco
XnxcICspJyArIHQudXBwZXIoKSArICdcICpcKCcsIGxpbmVfY29udGVudCk6CisgICAgICAgICAg
ICAgICAgbXNnID0gJ1VzZSBsb3dlcmNhc2UgY29tbWFuZCAiJyArIHQgKyAnIiBpbnN0ZWFkIG9m
ICInICsgdC51cHBlcigpICsgJyInCisgICAgICAgICAgICAgICAgc2VsZi5faGFuZGxlX3N0eWxl
X2Vycm9yKGxpbmVfbnVtYmVyLCAnY29tbWFuZC9sb3dlcmNhc2UnLCA1LCBtc2cpCisgICAgICAg
ICAgICBpZiByZS5zZWFyY2goJyhefFwgKyknICsgdCArICdcICtcKCcsIGxpbmVfY29udGVudCk6
CisgICAgICAgICAgICAgICAgbXNnID0gJ05vIHNwYWNlIGJldHdlZW4gY29tbWFuZCAiJyArIHQg
KyAnIiBhbmQgaXRzIHBhcmVudGhlc2VzLCBzaG91bGQgYmUgIicgKyB0ICsgJygiJworICAgICAg
ICAgICAgICAgIHNlbGYuX2hhbmRsZV9zdHlsZV9lcnJvcihsaW5lX251bWJlciwgJ3doaXRlc3Bh
Y2UvcGFyZW50aGVzZXMnLCA1LCBtc2cpCisKKyAgICBkZWYgX2NoZWNrX29uZV9zcGFjZV9jbWRz
KHNlbGYsIGxpbmVfbnVtYmVyLCBsaW5lX2NvbnRlbnQpOgorICAgICAgICAjIGNoZWNrIGNvbW1h
bmQgbGlrZSAiSUYgKCIgb3IgImlmKCIgb3IgImlmICAgKCIKKyAgICAgICAgZm9yIHQgaW4gc2Vs
Zi5fb25lX3NwYWNlX2NtZHM6CisgICAgICAgICAgICBpZiByZS5zZWFyY2goJyhefFwgKyknICsg
dC51cHBlcigpICsgJ1wgKlwoJywgbGluZV9jb250ZW50KToKKyAgICAgICAgICAgICAgICBtc2cg
PSAnVXNlIGxvd2VyY2FzZSBjb21tYW5kICInICsgdCArICciIGluc3RlYWQgb2YgIicgKyB0LnVw
cGVyKCkgKyAnIicKKyAgICAgICAgICAgICAgICBzZWxmLl9oYW5kbGVfc3R5bGVfZXJyb3IobGlu
ZV9udW1iZXIsICdjb21tYW5kL2xvd2VyY2FzZScsIDUsIG1zZykKKyAgICAgICAgICAgIGlmIHJl
LnNlYXJjaCgnKF58XCArKScgKyB0ICsgJyhcKHxcIFwgK1woKScsIGxpbmVfY29udGVudCk6Cisg
ICAgICAgICAgICAgICAgbXNnID0gJ09uZSBzcGFjZSBiZXR3ZWVuIGNvbW1hbmQgICInICsgdCAr
ICciIGFuZCBpdHMgcGFyZW50aGVzZXMsIHNob3VsZCBiZSAiJyArIHQgKyAnICgiJworICAgICAg
ICAgICAgICAgIHNlbGYuX2hhbmRsZV9zdHlsZV9lcnJvcihsaW5lX251bWJlciwgJ3doaXRlc3Bh
Y2UvcGFyZW50aGVzZXMnLCA1LCBtc2cpCisKKyAgICBkZWYgX2NoZWNrX2luZGVudChzZWxmLCBs
aW5lX251bWJlciwgbGluZV9jb250ZW50KToKKyAgICAgICAgI1RPRE8gKGhhbHRvbik6IGFkZCBp
bmRlbnQgY2hlY2tpbmcKKyAgICAgICAgcGFzcwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>177981</attachid>
            <date>2012-12-06 02:32:25 -0800</date>
            <delta_ts>2012-12-07 02:36:20 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-104240-20121206183225.patch</filename>
            <type>text/plain</type>
            <size>11601</size>
            <attacher name="Halton Huo">halton.huo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM2NzkwCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNWZmN2FjNWIzMTMyOWJkZDgzYjM0YTZjZjI1MzJmYzkw
YjUxNTY4ZC4uMTZiNWZiZGJhZTU3OTI0NWU3ZTdkY2I3N2MzYWMyOWQxOGRkNjZjZSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMy
IEBACisyMDEyLTEyLTA2ICBIYWx0b24gSHVvICA8aGFsdG9uLmh1b0BpbnRlbC5jb20+CisKKyAg
ICAgICAgW0NNYWtlXSBBZGQgQ01ha2Ugc3R5bGUgY2hlY2tlcgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA0MjQwCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIENNYWtlIHN0eWxlIGNoZWNrZXIgaXMg
Zm9sbG93ZWQgYnkgZXhpc3Rpbmcgc3R5bGUgY2hlY2tlcnMgbGlrZSBjcHAsIHhtbC4KKworICAg
ICAgICAqIFNjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlci5weTogCisgICAgICAgIChGaWxl
VHlwZSk6IEFkZCBDTUFLRSB0eXBlCisgICAgICAgIChDaGVja2VyRGlzcGF0Y2hlci5fZmlsZV90
eXBlKTogcmV0dXJuIENNQUtFIHR5cGUgZm9yIC5jbWFrZSBmaWxlcyBhbmQgQ01ha2VMaXN0cy50
eHQKKyAgICAgICAgKENoZWNrZXJEaXNwYXRjaGVyLl9jcmVhdGVfY2hlY2tlcik6IENyZWF0ZSBD
TWFrZUNoZWtlciB3aGVuIEZpbGVUeXBlLkNNQUtFCisgICAgICAgICogU2NyaXB0cy93ZWJraXRw
eS9zdHlsZS9jaGVja2Vycy9jbWFrZS1jb21tYW5kcy1uby1zcGFjZS50eHQ6IEFkZGVkLgorICAg
ICAgICAgIG5vbi1jb25kaXRpb25hbCBDTWFrZSBjb21tYW5kcyBsaXN0IHN1Y2ggYXMgc2V0LCBt
ZXNzYWdlLCBsaXN0LCBldGMuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVj
a2Vycy9jbWFrZS1jb21tYW5kcy1vbmUtc3BhY2UudHh0OiBBZGRlZC4KKyAgICAgICAgICBjb25k
aXRpb25hbCBDTWFrZSBjb21tYW5kcyBsaXN0IHN1Y2ggYXMgaWYsIGZvcmVhY2gsIHdoaWxlLCBl
dGMuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy9jbWFrZS5weTog
QWRkZWQuCisgICAgICAgIChDTWFrZUNoZWNrZXIpOgorICAgICAgICAoQ01ha2VDaGVja2VyLl9f
aW5pdF9fKTogaW5pdCBzb21lIHZhbHVlcworICAgICAgICAoQ01ha2VDaGVja2VyLmNoZWNrKTog
U3R5bGUgY2hlY2tlciBpbnRlcmZhY2UKKyAgICAgICAgKENNYWtlQ2hlY2tlci5fcHJvY2Vzc19s
aW5lKTogcHJvY2VzcyBsaW5lLWJ5LWxpbmUKKyAgICAgICAgKENNYWtlQ2hlY2tlci5fcmVhZF9m
aWxlX2lnbm9yZV9jb21tZW50cyk6IGdldCBjb21tYW5kcyBsaXN0IAorICAgICAgICAoQ01ha2VD
aGVja2VyLl9jaGVja19ub19zcGFjZV9jbWRzKTogY2hlY2sgc3R5bGUgZm9yIGNvbW1hbmRzIGlu
CisgICAgICAgIGNtYWtlLWNvbW1hbmRzLW5vLXNwYWNlLnR4dAorICAgICAgICAoQ01ha2VDaGVj
a2VyLl9jaGVja19vbmVfc3BhY2VfY21kcyk6IGNoZWNrIHN0eWxlIGZvciBjb21tYW5kcyBpbgor
ICAgICAgICBjbWFrZS1jb21tYW5kcy1vbmUtc3BhY2UudHh0CisgICAgICAgIChDTWFrZUNoZWNr
ZXIuX2NoZWNrX2luZGVudCk6IGEgcGxhY2Vob2xkZXIsIGxlYXZlIGEgVE9ETworCiAyMDEyLTEy
LTA1ICBIYWx0b24gSHVvICA8aGFsdG9uLmh1b0BpbnRlbC5jb20+CiAKICAgICAgICAgW0NNYWtl
XSBVbmlmeSBjb2Rpbmcgc3R5bGUgZm9yIENNYWtlIGZpbGVzCmRpZmYgLS1naXQgYS9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXIucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L3N0eWxlL2NoZWNrZXIucHkKaW5kZXggN2ExNTE4YjViYzk0M2ZlYzgyNGZjMTkwODFkOTQ2NGNm
NTIyMmQwNy4uOTM5NTk0NzFmZjYyMjQ2ZDJjMjlhYzEyMWI4NmMxZjU0ZGI2NTc0MyAxMDA2NDQK
LS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2VyLnB5CisrKyBiL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlci5weQpAQCAtMzksNiArMzksNyBAQCBmcm9t
IGNoZWNrZXJzLmNvbW1vbiBpbXBvcnQgY2F0ZWdvcmllcyBhcyBDb21tb25DYXRlZ29yaWVzCiBm
cm9tIGNoZWNrZXJzLmNvbW1vbiBpbXBvcnQgQ2FycmlhZ2VSZXR1cm5DaGVja2VyCiBmcm9tIGNo
ZWNrZXJzLmNoYW5nZWxvZyBpbXBvcnQgQ2hhbmdlTG9nQ2hlY2tlcgogZnJvbSBjaGVja2Vycy5j
cHAgaW1wb3J0IENwcENoZWNrZXIKK2Zyb20gY2hlY2tlcnMuY21ha2UgaW1wb3J0IENNYWtlQ2hl
Y2tlcgogZnJvbSBjaGVja2Vycy5qc29uY2hlY2tlciBpbXBvcnQgSlNPTkNoZWNrZXIKIGZyb20g
Y2hlY2tlcnMucG5nIGltcG9ydCBQTkdDaGVja2VyCiBmcm9tIGNoZWNrZXJzLnB5dGhvbiBpbXBv
cnQgUHl0aG9uQ2hlY2tlcgpAQCAtMzA2LDYgKzMwNyw4IEBAIF9YTUxfRklMRV9FWFRFTlNJT05T
ID0gWwogCiBfUE5HX0ZJTEVfRVhURU5TSU9OID0gJ3BuZycKIAorX0NNQUtFX0ZJTEVfRVhURU5T
SU9OID0gJ2NtYWtlJworCiAjIEZpbGVzIHRvIHNraXAgdGhhdCBhcmUgbGVzcyBvYnZpb3VzLgog
IwogIyBTb21lIGZpbGVzIHNob3VsZCBiZSBza2lwcGVkIHdoZW4gY2hlY2tpbmcgc3R5bGUuIEZv
ciBleGFtcGxlLApAQCAtNDk2LDYgKzQ5OSw3IEBAIGNsYXNzIEZpbGVUeXBlOgogICAgIFdBVENI
TElTVCA9IDcKICAgICBYTUwgPSA4CiAgICAgWENPREVQUk9KID0gOQorICAgIENNQUtFID0gMTAK
IAogCiBjbGFzcyBDaGVja2VyRGlzcGF0Y2hlcihvYmplY3QpOgpAQCAtNTc0LDYgKzU3OCw4IEBA
IGNsYXNzIENoZWNrZXJEaXNwYXRjaGVyKG9iamVjdCk6CiAgICAgICAgICAgICByZXR1cm4gRmls
ZVR5cGUuWENPREVQUk9KCiAgICAgICAgIGVsaWYgZmlsZV9leHRlbnNpb24gPT0gX1BOR19GSUxF
X0VYVEVOU0lPTjoKICAgICAgICAgICAgIHJldHVybiBGaWxlVHlwZS5QTkcKKyAgICAgICAgZWxp
ZiAoKGZpbGVfZXh0ZW5zaW9uID09IF9DTUFLRV9GSUxFX0VYVEVOU0lPTikgb3Igb3MucGF0aC5i
YXNlbmFtZShmaWxlX3BhdGgpID09ICdDTWFrZUxpc3RzLnR4dCcpOgorICAgICAgICAgICAgcmV0
dXJuIEZpbGVUeXBlLkNNQUtFCiAgICAgICAgIGVsaWYgKChub3QgZmlsZV9leHRlbnNpb24gYW5k
IG9zLnBhdGguam9pbigiVG9vbHMiLCAiU2NyaXB0cyIpIGluIGZpbGVfcGF0aCkgb3IKICAgICAg
ICAgICAgICAgZmlsZV9leHRlbnNpb24gaW4gX1RFWFRfRklMRV9FWFRFTlNJT05TIG9yIG9zLnBh
dGguYmFzZW5hbWUoZmlsZV9wYXRoKSA9PSAnVGVzdEV4cGVjdGF0aW9ucycpOgogICAgICAgICAg
ICAgcmV0dXJuIEZpbGVUeXBlLlRFWFQKQEAgLTYwNCw2ICs2MTAsOCBAQCBjbGFzcyBDaGVja2Vy
RGlzcGF0Y2hlcihvYmplY3QpOgogICAgICAgICAgICAgY2hlY2tlciA9IFhjb2RlUHJvamVjdEZp
bGVDaGVja2VyKGZpbGVfcGF0aCwgaGFuZGxlX3N0eWxlX2Vycm9yKQogICAgICAgICBlbGlmIGZp
bGVfdHlwZSA9PSBGaWxlVHlwZS5QTkc6CiAgICAgICAgICAgICBjaGVja2VyID0gUE5HQ2hlY2tl
cihmaWxlX3BhdGgsIGhhbmRsZV9zdHlsZV9lcnJvcikKKyAgICAgICAgZWxpZiBmaWxlX3R5cGUg
PT0gRmlsZVR5cGUuQ01BS0U6CisgICAgICAgICAgICBjaGVja2VyID0gQ01ha2VDaGVja2VyKGZp
bGVfcGF0aCwgaGFuZGxlX3N0eWxlX2Vycm9yKQogICAgICAgICBlbGlmIGZpbGVfdHlwZSA9PSBG
aWxlVHlwZS5URVhUOgogICAgICAgICAgICAgYmFzZW5hbWUgPSBvcy5wYXRoLmJhc2VuYW1lKGZp
bGVfcGF0aCkKICAgICAgICAgICAgIGlmIGJhc2VuYW1lID09ICdUZXN0RXhwZWN0YXRpb25zJzoK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvY21ha2Ut
Y29tbWFuZHMtbm8tc3BhY2UudHh0IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVj
a2Vycy9jbWFrZS1jb21tYW5kcy1uby1zcGFjZS50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTkwZjBjZTgxYTlm
MmFiZDJjNmUwNDJiODQ3YWIzNGVkNDg5MmZkMgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvY21ha2UtY29tbWFuZHMtbm8tc3BhY2UudHh0
CkBAIC0wLDAgKzEsNzcgQEAKKyMgR2V0IGZyb20gbGF0ZXN0IGNvbW1hbmRzIHNlY3Rpb24gb2Yg
Q01ha2UgZG9jdW1lbnQgCisjIE5vdyBpdCBpcyBnZW5lcmF0ZWQgZnJvbQorIyBodHRwOi8vd3d3
LmNtYWtlLm9yZy9jbWFrZS9oZWxwL3YyLjguMTAvY21ha2UuaHRtbCNzZWN0aW9uX0NvbW1hbmRz
CisjIFRoZSBjb25kaXRpb25hbCBjb21tYW5kcyBsaWtlIGlmLCBlbHNlLCBlbmRpZiwgZm9yZWFj
aCwgZW5kZm9yZWFjaCwKKyMgd2hpbGUsIGVuZHdoaWxlIGFuZCBicmVhayBhcmUgc2F2ZWQgaW4g
Y21ha2UtY29tbWFuZHMtb25lLXNwYWNlLnR4dAorYWRkX2N1c3RvbV9jb21tYW5kCithZGRfY3Vz
dG9tX3RhcmdldAorYWRkX2RlZmluaXRpb25zCithZGRfZGVwZW5kZW5jaWVzCithZGRfZXhlY3V0
YWJsZQorYWRkX2xpYnJhcnkKK2FkZF9zdWJkaXJlY3RvcnkKK2FkZF90ZXN0CithdXhfc291cmNl
X2RpcmVjdG9yeQorYnVpbGRfY29tbWFuZAorY21ha2VfbWluaW11bV9yZXF1aXJlZAorY21ha2Vf
cG9saWN5Citjb25maWd1cmVfZmlsZQorY3JlYXRlX3Rlc3Rfc291cmNlbGlzdAorZGVmaW5lX3By
b3BlcnR5CitlbmFibGVfbGFuZ3VhZ2UKK2VuYWJsZV90ZXN0aW5nCitlbmRmdW5jdGlvbgorZW5k
bWFjcm8KK2V4ZWN1dGVfcHJvY2VzcworZXhwb3J0CitmaWxlCitmaW5kX2ZpbGUKK2ZpbmRfbGli
cmFyeQorZmluZF9wYWNrYWdlCitmaW5kX3BhdGgKK2ZpbmRfcHJvZ3JhbQorZmx0a193cmFwX3Vp
CitmdW5jdGlvbgorZ2V0X2NtYWtlX3Byb3BlcnR5CitnZXRfZGlyZWN0b3J5X3Byb3BlcnR5Citn
ZXRfZmlsZW5hbWVfY29tcG9uZW50CitnZXRfcHJvcGVydHkKK2dldF9zb3VyY2VfZmlsZV9wcm9w
ZXJ0eQorZ2V0X3RhcmdldF9wcm9wZXJ0eQorZ2V0X3Rlc3RfcHJvcGVydHkKK2luY2x1ZGUKK2lu
Y2x1ZGVfZGlyZWN0b3JpZXMKK2luY2x1ZGVfZXh0ZXJuYWxfbXNwcm9qZWN0CitpbmNsdWRlX3Jl
Z3VsYXJfZXhwcmVzc2lvbgoraW5zdGFsbAorbGlua19kaXJlY3RvcmllcworbGlzdAorbG9hZF9j
YWNoZQorbG9hZF9jb21tYW5kCittYWNybworbWFya19hc19hZHZhbmNlZAorbWF0aAorbWVzc2Fn
ZQorb3B0aW9uCitwcm9qZWN0CitxdF93cmFwX2NwcAorcXRfd3JhcF91aQorcmVtb3ZlX2RlZmlu
aXRpb25zCityZXR1cm4KK3NlcGFyYXRlX2FyZ3VtZW50cworc2V0CitzZXRfZGlyZWN0b3J5X3By
b3BlcnRpZXMKK3NldF9wcm9wZXJ0eQorc2V0X3NvdXJjZV9maWxlc19wcm9wZXJ0aWVzCitzZXRf
dGFyZ2V0X3Byb3BlcnRpZXMKK3NldF90ZXN0c19wcm9wZXJ0aWVzCitzaXRlX25hbWUKK3NvdXJj
ZV9ncm91cAorc3RyaW5nCit0YXJnZXRfbGlua19saWJyYXJpZXMKK3RyeV9jb21waWxlCit0cnlf
cnVuCit1bnNldAordmFyaWFibGVfd2F0Y2gKKyNGb2xsb3dpbmcgYXJlIG5vdCBpbiBjbWFrZSBj
b21tYW5kcyBzZWN0aW9uLCBidXQgaXQgaXMgYnVuZGxlZCB3aXRoIGNtYWtlCitwa2dfY2hlY2tf
bW9kdWxlcwpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vy
cy9jbWFrZS1jb21tYW5kcy1vbmUtc3BhY2UudHh0IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9z
dHlsZS9jaGVja2Vycy9jbWFrZS1jb21tYW5kcy1vbmUtc3BhY2UudHh0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRh
Njg4YTE1Y2ZiMDU1ZTcyNjQwOTIzYjY4MTU3MTRlN2E4YWQ1ZmIKLS0tIC9kZXYvbnVsbAorKysg
Yi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL2NtYWtlLWNvbW1hbmRzLW9u
ZS1zcGFjZS50eHQKQEAgLTAsMCArMSw5IEBACitpZgorZWxzZQorZWxzZWlmCitlbmRpZgorZm9y
ZWFjaAorZW5kZm9yZWFjaAord2hpbGUKK2VuZHdoaWxlCiticmVhawpkaWZmIC0tZ2l0IGEvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy9jbWFrZS5weSBiL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvY21ha2UucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTZmZjlhNWY2
YmZiM2Y5NDJjYWM2MWY5NDEwOWRmYzc2YWFjZjQwMQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvY21ha2UucHkKQEAgLTAsMCArMSwxMDQg
QEAKKyMgQ29weXJpZ2h0IChDKSAyMDEyIEludGVsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBhcmUgbWV0OgorIyAxLiAgUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMg
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisjICAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisK
KworIiIiU3VwcG9ydHMgY2hlY2tpbmcgV2ViS2l0IHN0eWxlIGluIGNtYWtlIGZpbGVzLiguY21h
a2UsIENNYWtlTGlzdHMudHh0KSIiIgorCitpbXBvcnQgb3MKK2ltcG9ydCByZQoraW1wb3J0IHN5
cworCisKK2NsYXNzIENNYWtlQ2hlY2tlcihvYmplY3QpOgorICAgICIiIlByb2Nlc3NlcyBDTWFr
ZSBsaW5lcyBmb3IgY2hlY2tpbmcgc3R5bGUuIiIiCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwg
ZmlsZV9wYXRoLCBoYW5kbGVfc3R5bGVfZXJyb3IpOgorICAgICAgICBzZWxmLl9oYW5kbGVfc3R5
bGVfZXJyb3IgPSBoYW5kbGVfc3R5bGVfZXJyb3IKKyAgICAgICAgYmFzZWRpciA9IG9zLnBhdGgu
ZGlybmFtZShvcy5wYXRoLmFic3BhdGgoX19maWxlX18pKQorICAgICAgICBzZWxmLl9ub19zcGFj
ZV9jbWRzID0gc2VsZi5fcmVhZF9maWxlX2lnbm9yZV9jb21tZW50cygKKyAgICAgICAgICAgICAg
ICAgIG9zLnBhdGguam9pbihiYXNlZGlyLCAiY21ha2UtY29tbWFuZHMtbm8tc3BhY2UudHh0Iikp
CisgICAgICAgIHNlbGYuX29uZV9zcGFjZV9jbWRzID0gc2VsZi5fcmVhZF9maWxlX2lnbm9yZV9j
b21tZW50cygKKyAgICAgICAgICAgICAgICAgIG9zLnBhdGguam9pbihiYXNlZGlyLCAiY21ha2Ut
Y29tbWFuZHMtb25lLXNwYWNlLnR4dCIpKQorCisgICAgZGVmIGNoZWNrKHNlbGYsIGxpbmVzKToK
KyAgICAgICAgc2VsZi5fbnVtX2xpbmVzID0gbGVuKGxpbmVzKQorICAgICAgICBmb3IgbCBpbiB4
cmFuZ2Uoc2VsZi5fbnVtX2xpbmVzKToKKyAgICAgICAgICAgIHNlbGYuX3Byb2Nlc3NfbGluZShs
ICsgMSwgbGluZXNbbF0pCisKKyAgICBkZWYgX3Byb2Nlc3NfbGluZShzZWxmLCBsaW5lX251bWJl
ciwgbGluZV9jb250ZW50KToKKyAgICAgICAgaWYgbGluZV9jb250ZW50LmZpbmQoJ1x0JykgIT0g
LTE6CisgICAgICAgICAgICBzZWxmLl9oYW5kbGVfc3R5bGVfZXJyb3IobGluZV9udW1iZXIsICd3
aGl0ZXNwYWNlL3RhYicsIDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
J1RhYiBmb3VuZDsgYmV0dGVyIHRvIHVzZSBzcGFjZXMnKQorICAgICAgICBsID0gbGluZV9jb250
ZW50LmV4cGFuZHRhYnMoNCkKKyAgICAgICAgaWYgKGxlbihsKSA+IDApIGFuZCAobFtsZW4obCkg
LSAxXSkgPT0gJyAnOgorICAgICAgICAgICAgc2VsZi5faGFuZGxlX3N0eWxlX2Vycm9yKGxpbmVf
bnVtYmVyLCAnd2hpdGVzcGFjZS90YWlsaW5nJywgNSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAnTm8gdGFpbGluZyBzcGFjZXMnKQorICAgICAgICAjIGNoZWNrIGNvbW1h
bmQgbGlrZSBtZXNzYWdlKCAidGVzdGluZyIpCisgICAgICAgIGlmIHJlLnNlYXJjaCgnXChcICsn
LCBsKToKKyAgICAgICAgICAgIHNlbGYuX2hhbmRsZV9zdHlsZV9lcnJvcihsaW5lX251bWJlciwg
J3doaXRlc3BhY2UvcGFyZW50aGVzZXMnLCA1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICdObyBzcGFjZSBhZnRlciAiKCInKQorICAgICAgICAjIGNoZWNrIGNvbW1hbmQg
bGlrZSBtZXNzYWdlKCJ0ZXN0aW5nIiApCisgICAgICAgIGlmIHJlLnNlYXJjaCgnXCArXCknLCBs
KSBhbmQgbm90IHJlLnNlYXJjaCgnXlwgK1wpJCcsIGwpOgorICAgICAgICAgICAgc2VsZi5faGFu
ZGxlX3N0eWxlX2Vycm9yKGxpbmVfbnVtYmVyLCAnd2hpdGVzcGFjZS9wYXJlbnRoZXNlcycsIDUs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ05vIHNwYWNlIGJlZm9yZSAi
KSInKQorICAgICAgICBzZWxmLl9jaGVja19ub19zcGFjZV9jbWRzKGxpbmVfbnVtYmVyLCBsKQor
ICAgICAgICBzZWxmLl9jaGVja19vbmVfc3BhY2VfY21kcyhsaW5lX251bWJlciwgbCkKKyAgICAg
ICAgc2VsZi5fY2hlY2tfaW5kZW50KGxpbmVfbnVtYmVyLCBsaW5lX2NvbnRlbnQpCisKKyAgICBk
ZWYgX3JlYWRfZmlsZV9pZ25vcmVfY29tbWVudHMoc2VsZiwgZmlsZW5hbWUpOgorICAgICAgICB0
cnk6CisgICAgICAgICAgICBmID0gb3BlbihmaWxlbmFtZSkKKyAgICAgICAgZXhjZXB0IElPRXJy
b3IsIG1zZzoKKyAgICAgICAgICAgIHByaW50ID4+IHN5cy5zdGRlcnIsIG1zZworICAgICAgICAg
ICAgcmV0dXJuCisgICAgICAgIHJldF92YWwgPSBbXQorICAgICAgICBmb3IgbGluZSBpbiBmLnJl
YWRsaW5lcygpOgorICAgICAgICAgICAgbGkgPSBsaW5lLnN0cmlwKCkKKyAgICAgICAgICAgIGlm
IG5vdCBsaS5zdGFydHN3aXRoKCIjIik6CisgICAgICAgICAgICAgICAgcmV0X3ZhbC5hcHBlbmQo
bGkubG93ZXIoKSkKKyAgICAgICAgZi5jbG9zZSgpCisgICAgICAgIHJldHVybiByZXRfdmFsCisK
KyAgICBkZWYgX2NoZWNrX25vX3NwYWNlX2NtZHMoc2VsZiwgbGluZV9udW1iZXIsIGxpbmVfY29u
dGVudCk6CisgICAgICAgICMgY2hlY2sgY29tbWFuZCBsaWtlICJTRVQgICAgKCIKKyAgICAgICAg
Zm9yIHQgaW4gc2VsZi5fbm9fc3BhY2VfY21kczoKKyAgICAgICAgICAgIGlmIHJlLnNlYXJjaCgn
KF58XCArKScgKyB0LnVwcGVyKCkgKyAnXCAqXCgnLCBsaW5lX2NvbnRlbnQpOgorICAgICAgICAg
ICAgICAgIG1zZyA9ICdVc2UgbG93ZXJjYXNlIGNvbW1hbmQgIicgKyB0ICsgJyIgaW5zdGVhZCBv
ZiAiJyArIHQudXBwZXIoKSArICciJworICAgICAgICAgICAgICAgIHNlbGYuX2hhbmRsZV9zdHls
ZV9lcnJvcihsaW5lX251bWJlciwgJ2NvbW1hbmQvbG93ZXJjYXNlJywgNSwgbXNnKQorICAgICAg
ICAgICAgaWYgcmUuc2VhcmNoKCcoXnxcICspJyArIHQgKyAnXCArXCgnLCBsaW5lX2NvbnRlbnQp
OgorICAgICAgICAgICAgICAgIG1zZyA9ICdObyBzcGFjZSBiZXR3ZWVuIGNvbW1hbmQgIicgKyB0
ICsgJyIgYW5kIGl0cyBwYXJlbnRoZXNlcywgc2hvdWxkIGJlICInICsgdCArICcoIicKKyAgICAg
ICAgICAgICAgICBzZWxmLl9oYW5kbGVfc3R5bGVfZXJyb3IobGluZV9udW1iZXIsICd3aGl0ZXNw
YWNlL3BhcmVudGhlc2VzJywgNSwgbXNnKQorCisgICAgZGVmIF9jaGVja19vbmVfc3BhY2VfY21k
cyhzZWxmLCBsaW5lX251bWJlciwgbGluZV9jb250ZW50KToKKyAgICAgICAgIyBjaGVjayBjb21t
YW5kIGxpa2UgIklGICgiIG9yICJpZigiIG9yICJpZiAgICgiCisgICAgICAgIGZvciB0IGluIHNl
bGYuX29uZV9zcGFjZV9jbWRzOgorICAgICAgICAgICAgaWYgcmUuc2VhcmNoKCcoXnxcICspJyAr
IHQudXBwZXIoKSArICdcICpcKCcsIGxpbmVfY29udGVudCk6CisgICAgICAgICAgICAgICAgbXNn
ID0gJ1VzZSBsb3dlcmNhc2UgY29tbWFuZCAiJyArIHQgKyAnIiBpbnN0ZWFkIG9mICInICsgdC51
cHBlcigpICsgJyInCisgICAgICAgICAgICAgICAgc2VsZi5faGFuZGxlX3N0eWxlX2Vycm9yKGxp
bmVfbnVtYmVyLCAnY29tbWFuZC9sb3dlcmNhc2UnLCA1LCBtc2cpCisgICAgICAgICAgICBpZiBy
ZS5zZWFyY2goJyhefFwgKyknICsgdCArICcoXCh8XCBcICtcKCknLCBsaW5lX2NvbnRlbnQpOgor
ICAgICAgICAgICAgICAgIG1zZyA9ICdPbmUgc3BhY2UgYmV0d2VlbiBjb21tYW5kICAiJyArIHQg
KyAnIiBhbmQgaXRzIHBhcmVudGhlc2VzLCBzaG91bGQgYmUgIicgKyB0ICsgJyAoIicKKyAgICAg
ICAgICAgICAgICBzZWxmLl9oYW5kbGVfc3R5bGVfZXJyb3IobGluZV9udW1iZXIsICd3aGl0ZXNw
YWNlL3BhcmVudGhlc2VzJywgNSwgbXNnKQorCisgICAgZGVmIF9jaGVja19pbmRlbnQoc2VsZiwg
bGluZV9udW1iZXIsIGxpbmVfY29udGVudCk6CisgICAgICAgICNUT0RPIChoYWx0b24pOiBhZGQg
aW5kZW50IGNoZWNraW5nCisgICAgICAgIHBhc3MK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>178187</attachid>
            <date>2012-12-07 02:36:35 -0800</date>
            <delta_ts>2012-12-07 17:36:07 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-104240-20121207183639.patch</filename>
            <type>text/plain</type>
            <size>16293</size>
            <attacher name="Halton Huo">halton.huo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM2OTQwCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNDZiYmE1ODg0Njg2OTQ1NWQwYjkxNWViNWUxMjBhMGUy
MzEzZGVlZC4uOWJmY2Y1NzIxNTRmYzY0YzExYmE5ZGJlOGYyMzMzMjUxZGMyMzAxOSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0
IEBACisyMDEyLTEyLTA3ICBIYWx0b24gSHVvICA8aGFsdG9uLmh1b0BpbnRlbC5jb20+CisKKyAg
ICAgICAgW0NNYWtlXSBBZGQgQ01ha2Ugc3R5bGUgY2hlY2tlcgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA0MjQwCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIENNYWtlIHN0eWxlIGNoZWNrZXIgaXMg
Zm9sbG93ZWQgYnkgZXhpc3Rpbmcgc3R5bGUgY2hlY2tlcnMgbGlrZSBjcHAsIHB5dGhvbi4KKyAg
ICAgICAgVW5pdCB0ZXN0IGlzIGFkZGVkIGFzIHdlbGwuCisKKyAgICAgICAgKiBTY3JpcHRzL3dl
YmtpdHB5L3N0eWxlL2NoZWNrZXIucHk6IFVzZSBDTWFrZUNoZWNrZXIgQ01BS0UgdHlwZSBmaWxl
cyguY21ha2Ugb3IgQ01ha2VMaXN0cy50eHQpCisgICAgICAgIChGaWxlVHlwZSk6CisgICAgICAg
IChDaGVja2VyRGlzcGF0Y2hlci5fZmlsZV90eXBlKToKKyAgICAgICAgKENoZWNrZXJEaXNwYXRj
aGVyLl9jcmVhdGVfY2hlY2tlcik6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9zdHlsZS9j
aGVja2Vycy9jbWFrZS5weTogQWRkZWQuCisgICAgICAgIChDTWFrZUNoZWNrZXIpOgorICAgICAg
ICAoQ01ha2VDaGVja2VyLl9faW5pdF9fKTogCisgICAgICAgIChDTWFrZUNoZWNrZXIuY2hlY2sp
OgorICAgICAgICAoQ01ha2VDaGVja2VyLl9wcm9jZXNzX2xpbmUpOgorICAgICAgICAoQ01ha2VD
aGVja2VyLl9jaGVja190cmFpbGluZ193aGl0ZXNwYWNlKToKKyAgICAgICAgKENNYWtlQ2hlY2tl
ci5fY2hlY2tfbm9fc3BhY2VfY21kcyk6CisgICAgICAgIChDTWFrZUNoZWNrZXIuX2NoZWNrX29u
ZV9zcGFjZV9jbWRzKToKKyAgICAgICAgKENNYWtlQ2hlY2tlci5fY2hlY2tfaW5kZW50KToKKyAg
ICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL2NtYWtlX3VuaXR0ZXN0LnB5
OiBBZGRlZC4KKyAgICAgICAgKENNYWtlQ2hlY2tlclRlc3QpOgorICAgICAgICAoQ01ha2VDaGVj
a2VyVGVzdC50ZXN0X2luaXQpOgorICAgICAgICAoQ01ha2VDaGVja2VyVGVzdC50ZXN0X2luaXQu
X21vY2tfaGFuZGxlX3N0eWxlX2Vycm9yKToKKyAgICAgICAgKENNYWtlQ2hlY2tlclRlc3QudGVz
dF9jaGVjayk6CisgICAgICAgIChDTWFrZUNoZWNrZXJUZXN0LnRlc3RfY2hlY2suX21vY2tfaGFu
ZGxlX3N0eWxlX2Vycm9yKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNr
ZXJzL2NtYWtlX3VuaXR0ZXN0X2lucHV0LmNtYWtlOiBBZGRlZC4KKwogMjAxMi0xMi0wNyAgWGlh
b2JvIFdhbmcgIDx4YndhbmdAdG9yY2htb2JpbGUuY29tLmNuPgogCiAgICAgICAgIFtCbGFja0Jl
cnJ5XSBEUlQgLSBVcGRhdGUgaW1wbGVtZW50YXRpb24gb2YgVGVzdFJ1bm5lci5zZXRDdXN0b21Q
b2xpY3lEZWxlZ2F0ZSgpCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxl
L2NoZWNrZXIucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXIucHkKaW5k
ZXggN2ExNTE4YjViYzk0M2ZlYzgyNGZjMTkwODFkOTQ2NGNmNTIyMmQwNy4uOTM5NTk0NzFmZjYy
MjQ2ZDJjMjlhYzEyMWI4NmMxZjU0ZGI2NTc0MyAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9zdHlsZS9jaGVja2VyLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5
bGUvY2hlY2tlci5weQpAQCAtMzksNiArMzksNyBAQCBmcm9tIGNoZWNrZXJzLmNvbW1vbiBpbXBv
cnQgY2F0ZWdvcmllcyBhcyBDb21tb25DYXRlZ29yaWVzCiBmcm9tIGNoZWNrZXJzLmNvbW1vbiBp
bXBvcnQgQ2FycmlhZ2VSZXR1cm5DaGVja2VyCiBmcm9tIGNoZWNrZXJzLmNoYW5nZWxvZyBpbXBv
cnQgQ2hhbmdlTG9nQ2hlY2tlcgogZnJvbSBjaGVja2Vycy5jcHAgaW1wb3J0IENwcENoZWNrZXIK
K2Zyb20gY2hlY2tlcnMuY21ha2UgaW1wb3J0IENNYWtlQ2hlY2tlcgogZnJvbSBjaGVja2Vycy5q
c29uY2hlY2tlciBpbXBvcnQgSlNPTkNoZWNrZXIKIGZyb20gY2hlY2tlcnMucG5nIGltcG9ydCBQ
TkdDaGVja2VyCiBmcm9tIGNoZWNrZXJzLnB5dGhvbiBpbXBvcnQgUHl0aG9uQ2hlY2tlcgpAQCAt
MzA2LDYgKzMwNyw4IEBAIF9YTUxfRklMRV9FWFRFTlNJT05TID0gWwogCiBfUE5HX0ZJTEVfRVhU
RU5TSU9OID0gJ3BuZycKIAorX0NNQUtFX0ZJTEVfRVhURU5TSU9OID0gJ2NtYWtlJworCiAjIEZp
bGVzIHRvIHNraXAgdGhhdCBhcmUgbGVzcyBvYnZpb3VzLgogIwogIyBTb21lIGZpbGVzIHNob3Vs
ZCBiZSBza2lwcGVkIHdoZW4gY2hlY2tpbmcgc3R5bGUuIEZvciBleGFtcGxlLApAQCAtNDk2LDYg
KzQ5OSw3IEBAIGNsYXNzIEZpbGVUeXBlOgogICAgIFdBVENITElTVCA9IDcKICAgICBYTUwgPSA4
CiAgICAgWENPREVQUk9KID0gOQorICAgIENNQUtFID0gMTAKIAogCiBjbGFzcyBDaGVja2VyRGlz
cGF0Y2hlcihvYmplY3QpOgpAQCAtNTc0LDYgKzU3OCw4IEBAIGNsYXNzIENoZWNrZXJEaXNwYXRj
aGVyKG9iamVjdCk6CiAgICAgICAgICAgICByZXR1cm4gRmlsZVR5cGUuWENPREVQUk9KCiAgICAg
ICAgIGVsaWYgZmlsZV9leHRlbnNpb24gPT0gX1BOR19GSUxFX0VYVEVOU0lPTjoKICAgICAgICAg
ICAgIHJldHVybiBGaWxlVHlwZS5QTkcKKyAgICAgICAgZWxpZiAoKGZpbGVfZXh0ZW5zaW9uID09
IF9DTUFLRV9GSUxFX0VYVEVOU0lPTikgb3Igb3MucGF0aC5iYXNlbmFtZShmaWxlX3BhdGgpID09
ICdDTWFrZUxpc3RzLnR4dCcpOgorICAgICAgICAgICAgcmV0dXJuIEZpbGVUeXBlLkNNQUtFCiAg
ICAgICAgIGVsaWYgKChub3QgZmlsZV9leHRlbnNpb24gYW5kIG9zLnBhdGguam9pbigiVG9vbHMi
LCAiU2NyaXB0cyIpIGluIGZpbGVfcGF0aCkgb3IKICAgICAgICAgICAgICAgZmlsZV9leHRlbnNp
b24gaW4gX1RFWFRfRklMRV9FWFRFTlNJT05TIG9yIG9zLnBhdGguYmFzZW5hbWUoZmlsZV9wYXRo
KSA9PSAnVGVzdEV4cGVjdGF0aW9ucycpOgogICAgICAgICAgICAgcmV0dXJuIEZpbGVUeXBlLlRF
WFQKQEAgLTYwNCw2ICs2MTAsOCBAQCBjbGFzcyBDaGVja2VyRGlzcGF0Y2hlcihvYmplY3QpOgog
ICAgICAgICAgICAgY2hlY2tlciA9IFhjb2RlUHJvamVjdEZpbGVDaGVja2VyKGZpbGVfcGF0aCwg
aGFuZGxlX3N0eWxlX2Vycm9yKQogICAgICAgICBlbGlmIGZpbGVfdHlwZSA9PSBGaWxlVHlwZS5Q
Tkc6CiAgICAgICAgICAgICBjaGVja2VyID0gUE5HQ2hlY2tlcihmaWxlX3BhdGgsIGhhbmRsZV9z
dHlsZV9lcnJvcikKKyAgICAgICAgZWxpZiBmaWxlX3R5cGUgPT0gRmlsZVR5cGUuQ01BS0U6Cisg
ICAgICAgICAgICBjaGVja2VyID0gQ01ha2VDaGVja2VyKGZpbGVfcGF0aCwgaGFuZGxlX3N0eWxl
X2Vycm9yKQogICAgICAgICBlbGlmIGZpbGVfdHlwZSA9PSBGaWxlVHlwZS5URVhUOgogICAgICAg
ICAgICAgYmFzZW5hbWUgPSBvcy5wYXRoLmJhc2VuYW1lKGZpbGVfcGF0aCkKICAgICAgICAgICAg
IGlmIGJhc2VuYW1lID09ICdUZXN0RXhwZWN0YXRpb25zJzoKZGlmZiAtLWdpdCBhL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvY21ha2UucHkgYi9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L3N0eWxlL2NoZWNrZXJzL2NtYWtlLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJjMjNjY2Y1ZWQ3YmMw
NTA1ZTk4Y2RhOGQ1OWUyZTIzZmExNDNhNGUKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL2NtYWtlLnB5CkBAIC0wLDAgKzEsMTUyIEBACisj
IENvcHlyaWdodCAoQykgMjAxMiBJbnRlbCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisj
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisjIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisKKyIi
IlN1cHBvcnRzIGNoZWNraW5nIFdlYktpdCBzdHlsZSBpbiBjbWFrZSBmaWxlcy4oLmNtYWtlLCBD
TWFrZUxpc3RzLnR4dCkiIiIKKworaW1wb3J0IG9zCitpbXBvcnQgcmUKK2ltcG9ydCBzeXMKKwor
ZnJvbSBjb21tb24gaW1wb3J0IFRhYkNoZWNrZXIKKworCitjbGFzcyBDTWFrZUNoZWNrZXIob2Jq
ZWN0KToKKworICAgICIiIlByb2Nlc3NlcyBDTWFrZSBsaW5lcyBmb3IgY2hlY2tpbmcgc3R5bGUu
IiIiCisKKyAgICAjIE5PX1NQQUNFX0NNRFMgbGlzdCBhcmUgYmFzZWQgb24gY29tbWFuZHMgc2Vj
dGlvbiBvZiBDTWFrZSBkb2N1bWVudC4KKyAgICAjIE5vdyBpdCBpcyBnZW5lcmF0ZWQgZnJvbQor
ICAgICMgaHR0cDovL3d3dy5jbWFrZS5vcmcvY21ha2UvaGVscC92Mi44LjEwL2NtYWtlLmh0bWwj
c2VjdGlvbl9Db21tYW5kcy4KKyAgICAjIFNvbWUgY29tbWFuZHMgYXJlIGZyb20gZGVmYXVsdCBD
TWFrZSBtb2R1bGVzIHN1Y2ggYXMgcGtnX2NoZWNrX21vZHVsZXMuCisgICAgIyBQbGVhc2Uga2Vl
cCBsaXN0IGluIGFscGhhYmV0IG9yZGVyLgorICAgICMKKyAgICAjIEZvciBjb21tYW5kcyBpbiB0
aGlzIGxpc3QsIHNwYWNlcyBzaG91bGQgbm90IGJlIGFkZGVkIGl0IGFuZCBpdHMKKyAgICAjIHBh
cmVudGhlc2VzLiBGb3IgZWcsIG1lc3NhZ2UoInRlc3RpbmciKSwgbm90IG1lc3NhZ2UgKCJ0ZXN0
aW5nIikKKyAgICAjCisgICAgIyBUaGUgY29uZGl0aW9uYWwgY29tbWFuZHMgbGlrZSBpZiwgZWxz
ZSwgZW5kaWYsIGZvcmVhY2gsIGVuZGZvcmVhY2gsCisgICAgIyB3aGlsZSwgZW5kd2hpbGUgYW5k
IGJyZWFrIGFyZSBsaXN0ZWQgaW4gT05FX1NQQUNFX0NNRFMKKyAgICBOT19TUEFDRV9DTURTID0g
WworICAgICAgICAnYWRkX2N1c3RvbV9jb21tYW5kJywgJ2FkZF9jdXN0b21fdGFyZ2V0JywgJ2Fk
ZF9kZWZpbml0aW9ucycsCisgICAgICAgICdhZGRfZGVwZW5kZW5jaWVzJywgJ2FkZF9leGVjdXRh
YmxlJywgJ2FkZF9saWJyYXJ5JywKKyAgICAgICAgJ2FkZF9zdWJkaXJlY3RvcnknLCAnYWRkX3Rl
c3QnLCAnYXV4X3NvdXJjZV9kaXJlY3RvcnknLAorICAgICAgICAnYnVpbGRfY29tbWFuZCcsCisg
ICAgICAgICdjbWFrZV9taW5pbXVtX3JlcXVpcmVkJywgJ2NtYWtlX3BvbGljeScsICdjb25maWd1
cmVfZmlsZScsCisgICAgICAgICdjcmVhdGVfdGVzdF9zb3VyY2VsaXN0JywKKyAgICAgICAgJ2Rl
ZmluZV9wcm9wZXJ0eScsCisgICAgICAgICdlbmFibGVfbGFuZ3VhZ2UnLCAnZW5hYmxlX3Rlc3Rp
bmcnLCAnZW5kZnVuY3Rpb24nLCAnZW5kbWFjcm8nLAorICAgICAgICAnZXhlY3V0ZV9wcm9jZXNz
JywgJ2V4cG9ydCcsCisgICAgICAgICdmaWxlJywgJ2ZpbmRfZmlsZScsICdmaW5kX2xpYnJhcnkn
LCAnZmluZF9wYWNrYWdlJywgJ2ZpbmRfcGF0aCcsCisgICAgICAgICdmaW5kX3Byb2dyYW0nLCAn
Zmx0a193cmFwX3VpJywgJ2Z1bmN0aW9uJywKKyAgICAgICAgJ2dldF9jbWFrZV9wcm9wZXJ0eScs
ICdnZXRfZGlyZWN0b3J5X3Byb3BlcnR5JywKKyAgICAgICAgJ2dldF9maWxlbmFtZV9jb21wb25l
bnQnLCAnZ2V0X3Byb3BlcnR5JywgJ2dldF9zb3VyY2VfZmlsZV9wcm9wZXJ0eScsCisgICAgICAg
ICdnZXRfdGFyZ2V0X3Byb3BlcnR5JywgJ2dldF90ZXN0X3Byb3BlcnR5JywKKyAgICAgICAgJ2lu
Y2x1ZGUnLCAnaW5jbHVkZV9kaXJlY3RvcmllcycsICdpbmNsdWRlX2V4dGVybmFsX21zcHJvamVj
dCcsCisgICAgICAgICdpbmNsdWRlX3JlZ3VsYXJfZXhwcmVzc2lvbicsICdpbnN0YWxsJywKKyAg
ICAgICAgJ2xpbmtfZGlyZWN0b3JpZXMnLCAnbGlzdCcsICdsb2FkX2NhY2hlJywgJ2xvYWRfY29t
bWFuZCcsCisgICAgICAgICdtYWNybycsICdtYXJrX2FzX2FkdmFuY2VkJywgJ21hdGgnLCAnbWVz
c2FnZScsCisgICAgICAgICdvcHRpb24nLAorICAgICAgICAjRnJvbSBGaW5kUGtnQ29uZmlnLmNt
YWtlCisgICAgICAgICdwa2dfY2hlY2tfbW9kdWxlcycsCisgICAgICAgICdwcm9qZWN0JywKKyAg
ICAgICAgJ3F0X3dyYXBfY3BwJywgJ3F0X3dyYXBfdWknLAorICAgICAgICAncmVtb3ZlX2RlZmlu
aXRpb25zJywgJ3JldHVybicsCisgICAgICAgICdzZXBhcmF0ZV9hcmd1bWVudHMnLCAnc2V0Jywg
J3NldF9kaXJlY3RvcnlfcHJvcGVydGllcycsICdzZXRfcHJvcGVydHknLAorICAgICAgICAnc2V0
X3NvdXJjZV9maWxlc19wcm9wZXJ0aWVzJywgJ3NldF90YXJnZXRfcHJvcGVydGllcycsCisgICAg
ICAgICdzZXRfdGVzdHNfcHJvcGVydGllcycsICdzaXRlX25hbWUnLCAnc291cmNlX2dyb3VwJywg
J3N0cmluZycsCisgICAgICAgICd0YXJnZXRfbGlua19saWJyYXJpZXMnLCAndHJ5X2NvbXBpbGUn
LCAndHJ5X3J1bicsCisgICAgICAgICd1bnNldCcsCisgICAgICAgICd2YXJpYWJsZV93YXRjaCcs
CisgICAgXQorCisgICAgIyBDTWFrZSBjb25kaXRpb25hbCBjb21tYW5kcywgcmVxdWlyZSBvbmUg
c3BhY2UgYmV0d2VlbiBjb21tYW5kIGFuZAorICAgICMgaXRzIHBhcmVudGhlc2VzLCBzdWNoIGFz
ICJpZiAoIiwgImZvcmVhY2ggKCIsIGV0Yy4KKyAgICBPTkVfU1BBQ0VfQ01EUyA9IFsKKyAgICAg
ICAgJ2lmJywgJ2Vsc2UnLCAnZWxzZWlmJywgJ2VuZGlmJywKKyAgICAgICAgJ2ZvcmVhY2gnLCAn
ZW5kZm9yZWFjaCcsCisgICAgICAgICd3aGlsZScsICdlbmR3aGlsZScsCisgICAgICAgICdicmVh
aycsCisgICAgXQorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGZpbGVfcGF0aCwgaGFuZGxlX3N0
eWxlX2Vycm9yKToKKyAgICAgICAgc2VsZi5faGFuZGxlX3N0eWxlX2Vycm9yID0gaGFuZGxlX3N0
eWxlX2Vycm9yCisgICAgICAgIHNlbGYuX3RhYl9jaGVja2VyID0gVGFiQ2hlY2tlcihmaWxlX3Bh
dGgsIGhhbmRsZV9zdHlsZV9lcnJvcikKKworICAgIGRlZiBjaGVjayhzZWxmLCBsaW5lcyk6Cisg
ICAgICAgIHNlbGYuX3RhYl9jaGVja2VyLmNoZWNrKGxpbmVzKQorICAgICAgICBzZWxmLl9udW1f
bGluZXMgPSBsZW4obGluZXMpCisgICAgICAgIGZvciBsIGluIHhyYW5nZShzZWxmLl9udW1fbGlu
ZXMpOgorICAgICAgICAgICAgc2VsZi5fcHJvY2Vzc19saW5lKGwgKyAxLCBsaW5lc1tsXSkKKwor
ICAgIGRlZiBfcHJvY2Vzc19saW5lKHNlbGYsIGxpbmVfbnVtYmVyLCBsaW5lX2NvbnRlbnQpOgor
ICAgICAgICBpZiByZS5tYXRjaCgnKF58XCArKSMnLCBsaW5lX2NvbnRlbnQpOgorICAgICAgICAg
ICAgIyBpZ25vcmUgY29tbWVudCBsaW5lCisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgbCA9
IGxpbmVfY29udGVudC5leHBhbmR0YWJzKDQpCisgICAgICAgICMgY2hlY2sgY29tbWFuZCBsaWtl
IG1lc3NhZ2UoICJ0ZXN0aW5nIikKKyAgICAgICAgaWYgcmUuc2VhcmNoKCdcKFwgKycsIGwpOgor
ICAgICAgICAgICAgc2VsZi5faGFuZGxlX3N0eWxlX2Vycm9yKGxpbmVfbnVtYmVyLCAnd2hpdGVz
cGFjZS9wYXJlbnRoZXNlcycsIDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJ05vIHNwYWNlIGFmdGVyICIoIicpCisgICAgICAgICMgY2hlY2sgY29tbWFuZCBsaWtlIG1l
c3NhZ2UoInRlc3RpbmciICkKKyAgICAgICAgaWYgcmUuc2VhcmNoKCdcICtcKScsIGwpIGFuZCBu
b3QgcmUuc2VhcmNoKCdeXCArXCkkJywgbCk6CisgICAgICAgICAgICBzZWxmLl9oYW5kbGVfc3R5
bGVfZXJyb3IobGluZV9udW1iZXIsICd3aGl0ZXNwYWNlL3BhcmVudGhlc2VzJywgNSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnTm8gc3BhY2UgYmVmb3JlICIpIicpCisg
ICAgICAgIHNlbGYuX2NoZWNrX3RyYWlsaW5nX3doaXRlc3BhY2UobGluZV9udW1iZXIsIGwpCisg
ICAgICAgIHNlbGYuX2NoZWNrX25vX3NwYWNlX2NtZHMobGluZV9udW1iZXIsIGwpCisgICAgICAg
IHNlbGYuX2NoZWNrX29uZV9zcGFjZV9jbWRzKGxpbmVfbnVtYmVyLCBsKQorICAgICAgICBzZWxm
Ll9jaGVja19pbmRlbnQobGluZV9udW1iZXIsIGxpbmVfY29udGVudCkKKworICAgIGRlZiBfY2hl
Y2tfdHJhaWxpbmdfd2hpdGVzcGFjZShzZWxmLCBsaW5lX251bWJlciwgbGluZV9jb250ZW50KToK
KyAgICAgICAgbGluZV9jb250ZW50ID0gbGluZV9jb250ZW50LnJzdHJpcCgnXG4nKSAgICAjIGNo
cigxMCksIG5ld2xpbmUKKyAgICAgICAgbGluZV9jb250ZW50ID0gbGluZV9jb250ZW50LnJzdHJp
cCgnXHInKSAgICAjIGNocigxMyksIGNhcnJpYWdlIHJldHVybgorICAgICAgICBsaW5lX2NvbnRl
bnQgPSBsaW5lX2NvbnRlbnQucnN0cmlwKCdceDBjJykgICMgY2hyKDEyKSwgZm9ybSBmZWVkLCBe
TAorICAgICAgICBzdHJpcHBlZCA9IGxpbmVfY29udGVudC5yc3RyaXAoKQorICAgICAgICBpZiBs
aW5lX2NvbnRlbnQgIT0gc3RyaXBwZWQ6CisgICAgICAgICAgICBzZWxmLl9oYW5kbGVfc3R5bGVf
ZXJyb3IobGluZV9udW1iZXIsICd3aGl0ZXNwYWNlL3RyYWlsaW5nJywgNSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAnTm8gdHJhaWxpbmcgc3BhY2VzJykKKworICAgIGRl
ZiBfY2hlY2tfbm9fc3BhY2VfY21kcyhzZWxmLCBsaW5lX251bWJlciwgbGluZV9jb250ZW50KToK
KyAgICAgICAgIyBjaGVjayBjb21tYW5kIGxpa2UgIlNFVCAgICAoIiBvciAiU2V0KCIKKyAgICAg
ICAgZm9yIHQgaW4gc2VsZi5OT19TUEFDRV9DTURTOgorICAgICAgICAgICAgaWYgcmUuc2VhcmNo
KCcoXnxcICspJyArIHQgKyAnXCAqXCgnLCBsaW5lX2NvbnRlbnQsIGZsYWdzPXJlLklHTk9SRUNB
U0UpIGFuZCBcCisgICAgICAgICAgICAgICAobm90IHJlLnNlYXJjaCgnKF58XCArKScgKyB0Lmxv
d2VyKCkgKyAnXCAqXCgnLCBsaW5lX2NvbnRlbnQpKToKKyAgICAgICAgICAgICAgICBtc2cgPSAn
VXNlIGxvd2VyY2FzZSBjb21tYW5kICInICsgdC5sb3dlcigpICsgJyInCisgICAgICAgICAgICAg
ICAgc2VsZi5faGFuZGxlX3N0eWxlX2Vycm9yKGxpbmVfbnVtYmVyLCAnY29tbWFuZC9sb3dlcmNh
c2UnLCA1LCBtc2cpCisgICAgICAgICAgICBpZiByZS5zZWFyY2goJyhefFwgKyknICsgdC5sb3dl
cigpICsgJ1wgK1woJywgbGluZV9jb250ZW50KToKKyAgICAgICAgICAgICAgICBtc2cgPSAnTm8g
c3BhY2UgYmV0d2VlbiBjb21tYW5kICInICsgdC5sb3dlcigpICsgJyIgYW5kIGl0cyBwYXJlbnRo
ZXNlcywgc2hvdWxkIGJlICInICsgdCArICcoIicKKyAgICAgICAgICAgICAgICBzZWxmLl9oYW5k
bGVfc3R5bGVfZXJyb3IobGluZV9udW1iZXIsICd3aGl0ZXNwYWNlL3BhcmVudGhlc2VzJywgNSwg
bXNnKQorCisgICAgZGVmIF9jaGVja19vbmVfc3BhY2VfY21kcyhzZWxmLCBsaW5lX251bWJlciwg
bGluZV9jb250ZW50KToKKyAgICAgICAgIyBjaGVjayBjb21tYW5kIGxpa2UgIklGICgiIG9yICJp
ZigiIG9yICJpZiAgICgiIG9yICJJZiAoKSIKKyAgICAgICAgZm9yIHQgaW4gc2VsZi5PTkVfU1BB
Q0VfQ01EUzoKKyAgICAgICAgICAgIGlmIHJlLnNlYXJjaCgnKF58XCArKScgKyB0ICsgJ1wgKlwo
JywgbGluZV9jb250ZW50LCBmbGFncz1yZS5JR05PUkVDQVNFKSBhbmQgXAorICAgICAgICAgICAg
ICAgKG5vdCByZS5zZWFyY2goJyhefFwgKyknICsgdC5sb3dlcigpICsgJ1wgKlwoJywgbGluZV9j
b250ZW50KSk6CisgICAgICAgICAgICAgICAgbXNnID0gJ1VzZSBsb3dlcmNhc2UgY29tbWFuZCAi
JyArIHQubG93ZXIoKSArICciJworICAgICAgICAgICAgICAgIHNlbGYuX2hhbmRsZV9zdHlsZV9l
cnJvcihsaW5lX251bWJlciwgJ2NvbW1hbmQvbG93ZXJjYXNlJywgNSwgbXNnKQorICAgICAgICAg
ICAgaWYgcmUuc2VhcmNoKCcoXnxcICspJyArIHQubG93ZXIoKSArICcoXCh8XCBcICtcKCknLCBs
aW5lX2NvbnRlbnQpOgorICAgICAgICAgICAgICAgIG1zZyA9ICdPbmUgc3BhY2UgYmV0d2VlbiBj
b21tYW5kICInICsgdC5sb3dlcigpICsgJyIgYW5kIGl0cyBwYXJlbnRoZXNlcywgc2hvdWxkIGJl
ICInICsgdCArICcgKCInCisgICAgICAgICAgICAgICAgc2VsZi5faGFuZGxlX3N0eWxlX2Vycm9y
KGxpbmVfbnVtYmVyLCAnd2hpdGVzcGFjZS9wYXJlbnRoZXNlcycsIDUsIG1zZykKKworICAgIGRl
ZiBfY2hlY2tfaW5kZW50KHNlbGYsIGxpbmVfbnVtYmVyLCBsaW5lX2NvbnRlbnQpOgorICAgICAg
ICAjVE9ETyAoaGFsdG9uKTogYWRkIGluZGVudCBjaGVja2luZworICAgICAgICBwYXNzCmRpZmYg
LS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL2NtYWtlX3VuaXR0
ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy9jbWFrZV91bml0
dGVzdC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi41OTkyZDNmNTIzMjRiYThiZmNlOTdhMzg2MTNkMmE4MzY4OWQ2
ZjNhCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVj
a2Vycy9jbWFrZV91bml0dGVzdC5weQpAQCAtMCwwICsxLDc0IEBACisjIENvcHlyaWdodCAoQykg
MjAxMiBJbnRlbCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuICBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJyBBTkQKKyMgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyMgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorIyBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUgorIyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMCisjIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisjIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSCisjIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisjIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyIiIlVuaXQgdGVzdCBmb3IgY21ha2UucHkuIiIiCisK
K2ltcG9ydCBvcworaW1wb3J0IHVuaXR0ZXN0CisKK2Zyb20gY21ha2UgaW1wb3J0IENNYWtlQ2hl
Y2tlcgorCisKK2NsYXNzIENNYWtlQ2hlY2tlclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorCisg
ICAgIiIiVGVzdHMgQ01ha2VDaGVja2VyIGNsYXNzLiIiIgorCisgICAgZGVmIHRlc3RfaW5pdChz
ZWxmKToKKyAgICAgICAgIiIiVGVzdCBfX2luaXRfXygpIG1ldGhvZC4iIiIKKyAgICAgICAgZGVm
IF9tb2NrX2hhbmRsZV9zdHlsZV9lcnJvcihzZWxmKToKKyAgICAgICAgICAgIHBhc3MKKworICAg
ICAgICBjaGVja2VyID0gQ01ha2VDaGVja2VyKCJmb28uY21ha2UiLCBfbW9ja19oYW5kbGVfc3R5
bGVfZXJyb3IpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2hlY2tlci5faGFuZGxlX3N0eWxl
X2Vycm9yLCBfbW9ja19oYW5kbGVfc3R5bGVfZXJyb3IpCisKKyAgICBkZWYgdGVzdF9jaGVjayhz
ZWxmKToKKyAgICAgICAgIiIiVGVzdCBjaGVjaygpIG1ldGhvZC4iIiIKKyAgICAgICAgZXJyb3Jz
ID0gW10KKworICAgICAgICBkZWYgX21vY2tfaGFuZGxlX3N0eWxlX2Vycm9yKGxpbmVfbnVtYmVy
LCBjYXRlZ29yeSwgY29uZmlkZW5jZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBtZXNzYWdlKToKKyAgICAgICAgICAgIGVycm9yID0gKGxpbmVfbnVtYmVyLCBjYXRlZ29y
eSwgY29uZmlkZW5jZSwgbWVzc2FnZSkKKyAgICAgICAgICAgIGVycm9ycy5hcHBlbmQoZXJyb3Ip
CisKKyAgICAgICAgY3VycmVudF9kaXIgPSBvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pCisgICAg
ICAgIGZpbGVfcGF0aCA9IG9zLnBhdGguam9pbihjdXJyZW50X2RpciwgImNtYWtlX3VuaXR0ZXN0
X2lucHV0LmNtYWtlIikKKworICAgICAgICBjaGVja2VyID0gQ01ha2VDaGVja2VyKGZpbGVfcGF0
aCwgX21vY2tfaGFuZGxlX3N0eWxlX2Vycm9yKQorICAgICAgICBmID0gb3BlbihmaWxlX3BhdGgs
ICdyYicpCisgICAgICAgIGNoZWNrZXIuY2hlY2soZi5yZWFkbGluZXMoKSkKKyAgICAgICAgZi5j
bG9zZSgpCisKKyAgICAgICAgc2VsZi5tYXhEaWZmID0gTm9uZQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKGVycm9ycywgWworICAgICAgICAgICAgKDMsICd3aGl0ZXNwYWNlL3RhYicsIDUsICdM
aW5lIGNvbnRhaW5zIHRhYiBjaGFyYWN0ZXIuJyksCisgICAgICAgICAgICAoMiwgJ2NvbW1hbmQv
bG93ZXJjYXNlJywgNSwgJ1VzZSBsb3dlcmNhc2UgY29tbWFuZCAiaWYiJyksCisgICAgICAgICAg
ICAoNCwgJ3doaXRlc3BhY2UvdHJhaWxpbmcnLCA1LCAnTm8gdHJhaWxpbmcgc3BhY2VzJyksCisg
ICAgICAgICAgICAoNSwgJ3doaXRlc3BhY2UvcGFyZW50aGVzZXMnLCA1LCAnTm8gc3BhY2UgYWZ0
ZXIgIigiJyksCisgICAgICAgICAgICAoNiwgJ3doaXRlc3BhY2UvcGFyZW50aGVzZXMnLCA1LCAn
Tm8gc3BhY2UgYmVmb3JlICIpIicpLAorICAgICAgICAgICAgKDcsICdjb21tYW5kL2xvd2VyY2Fz
ZScsIDUsICdVc2UgbG93ZXJjYXNlIGNvbW1hbmQgIm1lc3NhZ2UiJyksCisgICAgICAgICAgICAo
OCwgJ2NvbW1hbmQvbG93ZXJjYXNlJywgNSwgJ1VzZSBsb3dlcmNhc2UgY29tbWFuZCAibWVzc2Fn
ZSInKSwKKyAgICAgICAgICAgICgxMCwgJ2NvbW1hbmQvbG93ZXJjYXNlJywgNSwgJ1VzZSBsb3dl
cmNhc2UgY29tbWFuZCAiZW5kaWYiJyksCisgICAgICAgICAgICAoMTIsICd3aGl0ZXNwYWNlL3Bh
cmVudGhlc2VzJywgNSwgJ09uZSBzcGFjZSBiZXR3ZWVuIGNvbW1hbmQgImlmIiBhbmQgaXRzIHBh
cmVudGhlc2VzLCBzaG91bGQgYmUgImlmICgiJyksCisgICAgICAgICAgICAoMTUsICd3aGl0ZXNw
YWNlL3BhcmVudGhlc2VzJywgNSwgJ05vIHNwYWNlIGJldHdlZW4gY29tbWFuZCAibWFjcm8iIGFu
ZCBpdHMgcGFyZW50aGVzZXMsIHNob3VsZCBiZSAibWFjcm8oIicpLAorICAgICAgICAgICAgKDE2
LCAnY29tbWFuZC9sb3dlcmNhc2UnLCA1LCAnVXNlIGxvd2VyY2FzZSBjb21tYW5kICJlbmRtYWNy
byInKSwKKyAgICAgICAgICAgICgxOCwgJ3doaXRlc3BhY2UvcGFyZW50aGVzZXMnLCA1LCAnTm8g
c3BhY2UgYmV0d2VlbiBjb21tYW5kICJmdW5jdGlvbiIgYW5kIGl0cyBwYXJlbnRoZXNlcywgc2hv
dWxkIGJlICJmdW5jdGlvbigiJyksCisgICAgICAgICAgICBdKQpkaWZmIC0tZ2l0IGEvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy9jbWFrZV91bml0dGVzdF9pbnB1dC5jbWFr
ZSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvY21ha2VfdW5pdHRlc3Rf
aW5wdXQuY21ha2UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWE0OTIxYjhjZjNlNzMzMGI3Y2Q3NWQ2YTg0ZDM3MjJj
OWE1YmVjOAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUv
Y2hlY2tlcnMvY21ha2VfdW5pdHRlc3RfaW5wdXQuY21ha2UKQEAgLTAsMCArMSwxOSBAQAorIyBU
aGlzIGZpbGUgaXMgc2FtcGxlIGlucHV0IGZvciBjbWFrZV91bml0dGVzdC5weSBhbmQgaW5jbHVk
ZXMgYmVsb3cgcHJvYmxlbXM6CitJRiAoKQorCW1lc3NhZ2UoIkVycm9yIGxpbmUgd2l0aCBUYWIi
KQorICBtZXNzYWdlKCJFcnJvciBsaW5lIHdpdGggZW5kZGluZyBzcGFjZXMiKSAgICAKKyAgbWVz
c2FnZSggIkVycm9yIGxpbmUgd2l0aCBzcGFjZSBhZnRlciAoIikKKyAgbWVzc2FnZSgiRXJyb3Ig
bGluZSB3aXRoIHNwYWNlIGJlZm9yZSAoIiApCisgIE1FU1NBR0UoIkVycm9yIGxpbmUgd2l0aCB1
cHBlciBjYXNlIG5vbi1jb25kdGlvbmFsIGNvbW1hbmQiKQorICBNRVNTYWdlKCJFcnJvciBsaW5l
IHdpdGggdXBwZXIgY2FzZSBub24tY29uZHRpb25hbCBjb21tYW5kIikKKyAgbWVzc2FnZSgiY29y
cmVjdCBtZXNzYWdlIGxpbmUiKQorRU5EaWYgKCkKKworaWYoKQorZW5kaWYgKCkKKworbWFjcm8g
KCkKK0VORE1hY3JvKCkKKworZnVuY3Rpb24gICAgKCkKK2VuZGZ1bmN0aW9uKCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>178313</attachid>
            <date>2012-12-07 17:36:19 -0800</date>
            <delta_ts>2012-12-08 08:05:08 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-104240-20121208093624.patch</filename>
            <type>text/plain</type>
            <size>15967</size>
            <attacher name="Halton Huo">halton.huo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM2OTQwCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNDZiYmE1ODg0Njg2OTQ1NWQwYjkxNWViNWUxMjBhMGUy
MzEzZGVlZC4uN2U1ZDVmMTE5YTgxNjQzOGQyZTk0YjBjY2RiMjlmMGIxMjE1N2U5MyAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0
IEBACisyMDEyLTEyLTA3ICBIYWx0b24gSHVvICA8aGFsdG9uLmh1b0BpbnRlbC5jb20+CisKKyAg
ICAgICAgW0NNYWtlXSBBZGQgQ01ha2Ugc3R5bGUgY2hlY2tlcgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA0MjQwCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIENNYWtlIHN0eWxlIGNoZWNrZXIgaXMg
Zm9sbG93ZWQgYnkgZXhpc3Rpbmcgc3R5bGUgY2hlY2tlcnMgbGlrZSBjcHAsIHB5dGhvbi4KKyAg
ICAgICAgVW5pdCB0ZXN0IGlzIGFkZGVkIGFzIHdlbGwuCisKKyAgICAgICAgKiBTY3JpcHRzL3dl
YmtpdHB5L3N0eWxlL2NoZWNrZXIucHk6IFVzZSBDTWFrZUNoZWNrZXIgQ01BS0UgdHlwZSBmaWxl
cyguY21ha2Ugb3IgQ01ha2VMaXN0cy50eHQpCisgICAgICAgIChGaWxlVHlwZSk6CisgICAgICAg
IChDaGVja2VyRGlzcGF0Y2hlci5fZmlsZV90eXBlKToKKyAgICAgICAgKENoZWNrZXJEaXNwYXRj
aGVyLl9jcmVhdGVfY2hlY2tlcik6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9zdHlsZS9j
aGVja2Vycy9jbWFrZS5weTogQWRkZWQuCisgICAgICAgIChDTWFrZUNoZWNrZXIpOgorICAgICAg
ICAoQ01ha2VDaGVja2VyLl9faW5pdF9fKTogCisgICAgICAgIChDTWFrZUNoZWNrZXIuY2hlY2sp
OgorICAgICAgICAoQ01ha2VDaGVja2VyLl9wcm9jZXNzX2xpbmUpOgorICAgICAgICAoQ01ha2VD
aGVja2VyLl9jaGVja190cmFpbGluZ193aGl0ZXNwYWNlKToKKyAgICAgICAgKENNYWtlQ2hlY2tl
ci5fY2hlY2tfbm9fc3BhY2VfY21kcyk6CisgICAgICAgIChDTWFrZUNoZWNrZXIuX2NoZWNrX29u
ZV9zcGFjZV9jbWRzKToKKyAgICAgICAgKENNYWtlQ2hlY2tlci5fY2hlY2tfbm9uX2xvd2VyY2Fz
ZV9jbWQpOgorICAgICAgICAoQ01ha2VDaGVja2VyLl9jaGVja19pbmRlbnQpOgorICAgICAgICAq
IFNjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvY21ha2VfdW5pdHRlc3QucHk6IEFkZGVk
LgorICAgICAgICAoQ01ha2VDaGVja2VyVGVzdCk6CisgICAgICAgIChDTWFrZUNoZWNrZXJUZXN0
LnRlc3RfaW5pdCk6CisgICAgICAgIChDTWFrZUNoZWNrZXJUZXN0LnRlc3RfaW5pdC5fbW9ja19o
YW5kbGVfc3R5bGVfZXJyb3IpOgorICAgICAgICAoQ01ha2VDaGVja2VyVGVzdC50ZXN0X2NoZWNr
KToKKyAgICAgICAgKENNYWtlQ2hlY2tlclRlc3QudGVzdF9jaGVjay5fbW9ja19oYW5kbGVfc3R5
bGVfZXJyb3IpOgorCiAyMDEyLTEyLTA3ICBYaWFvYm8gV2FuZyAgPHhid2FuZ0B0b3JjaG1vYmls
ZS5jb20uY24+CiAKICAgICAgICAgW0JsYWNrQmVycnldIERSVCAtIFVwZGF0ZSBpbXBsZW1lbnRh
dGlvbiBvZiBUZXN0UnVubmVyLnNldEN1c3RvbVBvbGljeURlbGVnYXRlKCkKZGlmZiAtLWdpdCBh
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlci5weSBiL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvc3R5bGUvY2hlY2tlci5weQppbmRleCA3YTE1MThiNWJjOTQzZmVjODI0ZmMxOTA4
MWQ5NDY0Y2Y1MjIyZDA3Li45Mzk1OTQ3MWZmNjIyNDZkMmMyOWFjMTIxYjg2YzFmNTRkYjY1NzQz
IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXIucHkKKysr
IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2VyLnB5CkBAIC0zOSw2ICszOSw3
IEBAIGZyb20gY2hlY2tlcnMuY29tbW9uIGltcG9ydCBjYXRlZ29yaWVzIGFzIENvbW1vbkNhdGVn
b3JpZXMKIGZyb20gY2hlY2tlcnMuY29tbW9uIGltcG9ydCBDYXJyaWFnZVJldHVybkNoZWNrZXIK
IGZyb20gY2hlY2tlcnMuY2hhbmdlbG9nIGltcG9ydCBDaGFuZ2VMb2dDaGVja2VyCiBmcm9tIGNo
ZWNrZXJzLmNwcCBpbXBvcnQgQ3BwQ2hlY2tlcgorZnJvbSBjaGVja2Vycy5jbWFrZSBpbXBvcnQg
Q01ha2VDaGVja2VyCiBmcm9tIGNoZWNrZXJzLmpzb25jaGVja2VyIGltcG9ydCBKU09OQ2hlY2tl
cgogZnJvbSBjaGVja2Vycy5wbmcgaW1wb3J0IFBOR0NoZWNrZXIKIGZyb20gY2hlY2tlcnMucHl0
aG9uIGltcG9ydCBQeXRob25DaGVja2VyCkBAIC0zMDYsNiArMzA3LDggQEAgX1hNTF9GSUxFX0VY
VEVOU0lPTlMgPSBbCiAKIF9QTkdfRklMRV9FWFRFTlNJT04gPSAncG5nJwogCitfQ01BS0VfRklM
RV9FWFRFTlNJT04gPSAnY21ha2UnCisKICMgRmlsZXMgdG8gc2tpcCB0aGF0IGFyZSBsZXNzIG9i
dmlvdXMuCiAjCiAjIFNvbWUgZmlsZXMgc2hvdWxkIGJlIHNraXBwZWQgd2hlbiBjaGVja2luZyBz
dHlsZS4gRm9yIGV4YW1wbGUsCkBAIC00OTYsNiArNDk5LDcgQEAgY2xhc3MgRmlsZVR5cGU6CiAg
ICAgV0FUQ0hMSVNUID0gNwogICAgIFhNTCA9IDgKICAgICBYQ09ERVBST0ogPSA5CisgICAgQ01B
S0UgPSAxMAogCiAKIGNsYXNzIENoZWNrZXJEaXNwYXRjaGVyKG9iamVjdCk6CkBAIC01NzQsNiAr
NTc4LDggQEAgY2xhc3MgQ2hlY2tlckRpc3BhdGNoZXIob2JqZWN0KToKICAgICAgICAgICAgIHJl
dHVybiBGaWxlVHlwZS5YQ09ERVBST0oKICAgICAgICAgZWxpZiBmaWxlX2V4dGVuc2lvbiA9PSBf
UE5HX0ZJTEVfRVhURU5TSU9OOgogICAgICAgICAgICAgcmV0dXJuIEZpbGVUeXBlLlBORworICAg
ICAgICBlbGlmICgoZmlsZV9leHRlbnNpb24gPT0gX0NNQUtFX0ZJTEVfRVhURU5TSU9OKSBvciBv
cy5wYXRoLmJhc2VuYW1lKGZpbGVfcGF0aCkgPT0gJ0NNYWtlTGlzdHMudHh0Jyk6CisgICAgICAg
ICAgICByZXR1cm4gRmlsZVR5cGUuQ01BS0UKICAgICAgICAgZWxpZiAoKG5vdCBmaWxlX2V4dGVu
c2lvbiBhbmQgb3MucGF0aC5qb2luKCJUb29scyIsICJTY3JpcHRzIikgaW4gZmlsZV9wYXRoKSBv
cgogICAgICAgICAgICAgICBmaWxlX2V4dGVuc2lvbiBpbiBfVEVYVF9GSUxFX0VYVEVOU0lPTlMg
b3Igb3MucGF0aC5iYXNlbmFtZShmaWxlX3BhdGgpID09ICdUZXN0RXhwZWN0YXRpb25zJyk6CiAg
ICAgICAgICAgICByZXR1cm4gRmlsZVR5cGUuVEVYVApAQCAtNjA0LDYgKzYxMCw4IEBAIGNsYXNz
IENoZWNrZXJEaXNwYXRjaGVyKG9iamVjdCk6CiAgICAgICAgICAgICBjaGVja2VyID0gWGNvZGVQ
cm9qZWN0RmlsZUNoZWNrZXIoZmlsZV9wYXRoLCBoYW5kbGVfc3R5bGVfZXJyb3IpCiAgICAgICAg
IGVsaWYgZmlsZV90eXBlID09IEZpbGVUeXBlLlBORzoKICAgICAgICAgICAgIGNoZWNrZXIgPSBQ
TkdDaGVja2VyKGZpbGVfcGF0aCwgaGFuZGxlX3N0eWxlX2Vycm9yKQorICAgICAgICBlbGlmIGZp
bGVfdHlwZSA9PSBGaWxlVHlwZS5DTUFLRToKKyAgICAgICAgICAgIGNoZWNrZXIgPSBDTWFrZUNo
ZWNrZXIoZmlsZV9wYXRoLCBoYW5kbGVfc3R5bGVfZXJyb3IpCiAgICAgICAgIGVsaWYgZmlsZV90
eXBlID09IEZpbGVUeXBlLlRFWFQ6CiAgICAgICAgICAgICBiYXNlbmFtZSA9IG9zLnBhdGguYmFz
ZW5hbWUoZmlsZV9wYXRoKQogICAgICAgICAgICAgaWYgYmFzZW5hbWUgPT0gJ1Rlc3RFeHBlY3Rh
dGlvbnMnOgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vy
cy9jbWFrZS5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvY21ha2Uu
cHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNzYxMWExNjY3MThmNGQ4ZTVlYzI5NThlOTExMGEzMDBjMTgyYjkwZgot
LS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMv
Y21ha2UucHkKQEAgLTAsMCArMSwxNTIgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDEyIEludGVsIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworIyBh
cmUgbWV0OgorIyAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgMi4gIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisjICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
CisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKworIiIiU3VwcG9ydHMgY2hlY2tpbmcgV2ViS2l0IHN0
eWxlIGluIGNtYWtlIGZpbGVzLiguY21ha2UsIENNYWtlTGlzdHMudHh0KSIiIgorCitpbXBvcnQg
b3MKK2ltcG9ydCByZQoraW1wb3J0IHN5cworCitmcm9tIGNvbW1vbiBpbXBvcnQgVGFiQ2hlY2tl
cgorCisKK2NsYXNzIENNYWtlQ2hlY2tlcihvYmplY3QpOgorCisgICAgIiIiUHJvY2Vzc2VzIENN
YWtlIGxpbmVzIGZvciBjaGVja2luZyBzdHlsZS4iIiIKKworICAgICMgTk9fU1BBQ0VfQ01EUyBs
aXN0IGFyZSBiYXNlZCBvbiBjb21tYW5kcyBzZWN0aW9uIG9mIENNYWtlIGRvY3VtZW50LgorICAg
ICMgTm93IGl0IGlzIGdlbmVyYXRlZCBmcm9tCisgICAgIyBodHRwOi8vd3d3LmNtYWtlLm9yZy9j
bWFrZS9oZWxwL3YyLjguMTAvY21ha2UuaHRtbCNzZWN0aW9uX0NvbW1hbmRzLgorICAgICMgU29t
ZSBjb21tYW5kcyBhcmUgZnJvbSBkZWZhdWx0IENNYWtlIG1vZHVsZXMgc3VjaCBhcyBwa2dfY2hl
Y2tfbW9kdWxlcy4KKyAgICAjIFBsZWFzZSBrZWVwIGxpc3QgaW4gYWxwaGFiZXQgb3JkZXIuCisg
ICAgIworICAgICMgRm9yIGNvbW1hbmRzIGluIHRoaXMgbGlzdCwgc3BhY2VzIHNob3VsZCBub3Qg
YmUgYWRkZWQgaXQgYW5kIGl0cworICAgICMgcGFyZW50aGVzZXMuIEZvciBlZywgbWVzc2FnZSgi
dGVzdGluZyIpLCBub3QgbWVzc2FnZSAoInRlc3RpbmciKQorICAgICMKKyAgICAjIFRoZSBjb25k
aXRpb25hbCBjb21tYW5kcyBsaWtlIGlmLCBlbHNlLCBlbmRpZiwgZm9yZWFjaCwgZW5kZm9yZWFj
aCwKKyAgICAjIHdoaWxlLCBlbmR3aGlsZSBhbmQgYnJlYWsgYXJlIGxpc3RlZCBpbiBPTkVfU1BB
Q0VfQ01EUworICAgIE5PX1NQQUNFX0NNRFMgPSBbCisgICAgICAgICdhZGRfY3VzdG9tX2NvbW1h
bmQnLCAnYWRkX2N1c3RvbV90YXJnZXQnLCAnYWRkX2RlZmluaXRpb25zJywKKyAgICAgICAgJ2Fk
ZF9kZXBlbmRlbmNpZXMnLCAnYWRkX2V4ZWN1dGFibGUnLCAnYWRkX2xpYnJhcnknLAorICAgICAg
ICAnYWRkX3N1YmRpcmVjdG9yeScsICdhZGRfdGVzdCcsICdhdXhfc291cmNlX2RpcmVjdG9yeScs
CisgICAgICAgICdidWlsZF9jb21tYW5kJywKKyAgICAgICAgJ2NtYWtlX21pbmltdW1fcmVxdWly
ZWQnLCAnY21ha2VfcG9saWN5JywgJ2NvbmZpZ3VyZV9maWxlJywKKyAgICAgICAgJ2NyZWF0ZV90
ZXN0X3NvdXJjZWxpc3QnLAorICAgICAgICAnZGVmaW5lX3Byb3BlcnR5JywKKyAgICAgICAgJ2Vu
YWJsZV9sYW5ndWFnZScsICdlbmFibGVfdGVzdGluZycsICdlbmRmdW5jdGlvbicsICdlbmRtYWNy
bycsCisgICAgICAgICdleGVjdXRlX3Byb2Nlc3MnLCAnZXhwb3J0JywKKyAgICAgICAgJ2ZpbGUn
LCAnZmluZF9maWxlJywgJ2ZpbmRfbGlicmFyeScsICdmaW5kX3BhY2thZ2UnLCAnZmluZF9wYXRo
JywKKyAgICAgICAgJ2ZpbmRfcHJvZ3JhbScsICdmbHRrX3dyYXBfdWknLCAnZnVuY3Rpb24nLAor
ICAgICAgICAnZ2V0X2NtYWtlX3Byb3BlcnR5JywgJ2dldF9kaXJlY3RvcnlfcHJvcGVydHknLAor
ICAgICAgICAnZ2V0X2ZpbGVuYW1lX2NvbXBvbmVudCcsICdnZXRfcHJvcGVydHknLCAnZ2V0X3Nv
dXJjZV9maWxlX3Byb3BlcnR5JywKKyAgICAgICAgJ2dldF90YXJnZXRfcHJvcGVydHknLCAnZ2V0
X3Rlc3RfcHJvcGVydHknLAorICAgICAgICAnaW5jbHVkZScsICdpbmNsdWRlX2RpcmVjdG9yaWVz
JywgJ2luY2x1ZGVfZXh0ZXJuYWxfbXNwcm9qZWN0JywKKyAgICAgICAgJ2luY2x1ZGVfcmVndWxh
cl9leHByZXNzaW9uJywgJ2luc3RhbGwnLAorICAgICAgICAnbGlua19kaXJlY3RvcmllcycsICds
aXN0JywgJ2xvYWRfY2FjaGUnLCAnbG9hZF9jb21tYW5kJywKKyAgICAgICAgJ21hY3JvJywgJ21h
cmtfYXNfYWR2YW5jZWQnLCAnbWF0aCcsICdtZXNzYWdlJywKKyAgICAgICAgJ29wdGlvbicsCisg
ICAgICAgICNGcm9tIEZpbmRQa2dDb25maWcuY21ha2UKKyAgICAgICAgJ3BrZ19jaGVja19tb2R1
bGVzJywKKyAgICAgICAgJ3Byb2plY3QnLAorICAgICAgICAncXRfd3JhcF9jcHAnLCAncXRfd3Jh
cF91aScsCisgICAgICAgICdyZW1vdmVfZGVmaW5pdGlvbnMnLCAncmV0dXJuJywKKyAgICAgICAg
J3NlcGFyYXRlX2FyZ3VtZW50cycsICdzZXQnLCAnc2V0X2RpcmVjdG9yeV9wcm9wZXJ0aWVzJywg
J3NldF9wcm9wZXJ0eScsCisgICAgICAgICdzZXRfc291cmNlX2ZpbGVzX3Byb3BlcnRpZXMnLCAn
c2V0X3RhcmdldF9wcm9wZXJ0aWVzJywKKyAgICAgICAgJ3NldF90ZXN0c19wcm9wZXJ0aWVzJywg
J3NpdGVfbmFtZScsICdzb3VyY2VfZ3JvdXAnLCAnc3RyaW5nJywKKyAgICAgICAgJ3RhcmdldF9s
aW5rX2xpYnJhcmllcycsICd0cnlfY29tcGlsZScsICd0cnlfcnVuJywKKyAgICAgICAgJ3Vuc2V0
JywKKyAgICAgICAgJ3ZhcmlhYmxlX3dhdGNoJywKKyAgICBdCisKKyAgICAjIENNYWtlIGNvbmRp
dGlvbmFsIGNvbW1hbmRzLCByZXF1aXJlIG9uZSBzcGFjZSBiZXR3ZWVuIGNvbW1hbmQgYW5kCisg
ICAgIyBpdHMgcGFyZW50aGVzZXMsIHN1Y2ggYXMgImlmICgiLCAiZm9yZWFjaCAoIiwgZXRjLgor
ICAgIE9ORV9TUEFDRV9DTURTID0gWworICAgICAgICAnaWYnLCAnZWxzZScsICdlbHNlaWYnLCAn
ZW5kaWYnLAorICAgICAgICAnZm9yZWFjaCcsICdlbmRmb3JlYWNoJywKKyAgICAgICAgJ3doaWxl
JywgJ2VuZHdoaWxlJywKKyAgICAgICAgJ2JyZWFrJywKKyAgICBdCisKKyAgICBkZWYgX19pbml0
X18oc2VsZiwgZmlsZV9wYXRoLCBoYW5kbGVfc3R5bGVfZXJyb3IpOgorICAgICAgICBzZWxmLl9o
YW5kbGVfc3R5bGVfZXJyb3IgPSBoYW5kbGVfc3R5bGVfZXJyb3IKKyAgICAgICAgc2VsZi5fdGFi
X2NoZWNrZXIgPSBUYWJDaGVja2VyKGZpbGVfcGF0aCwgaGFuZGxlX3N0eWxlX2Vycm9yKQorCisg
ICAgZGVmIGNoZWNrKHNlbGYsIGxpbmVzKToKKyAgICAgICAgc2VsZi5fdGFiX2NoZWNrZXIuY2hl
Y2sobGluZXMpCisgICAgICAgIHNlbGYuX251bV9saW5lcyA9IGxlbihsaW5lcykKKyAgICAgICAg
Zm9yIGwgaW4geHJhbmdlKHNlbGYuX251bV9saW5lcyk6CisgICAgICAgICAgICBzZWxmLl9wcm9j
ZXNzX2xpbmUobCArIDEsIGxpbmVzW2xdKQorCisgICAgZGVmIF9wcm9jZXNzX2xpbmUoc2VsZiwg
bGluZV9udW1iZXIsIGxpbmVfY29udGVudCk6CisgICAgICAgIGlmIHJlLm1hdGNoKCcoXnxcICsp
IycsIGxpbmVfY29udGVudCk6CisgICAgICAgICAgICAjIGlnbm9yZSBjb21tZW50IGxpbmUKKyAg
ICAgICAgICAgIHJldHVybgorICAgICAgICBsID0gbGluZV9jb250ZW50LmV4cGFuZHRhYnMoNCkK
KyAgICAgICAgIyBjaGVjayBjb21tYW5kIGxpa2UgbWVzc2FnZSggInRlc3RpbmciKQorICAgICAg
ICBpZiByZS5zZWFyY2goJ1woXCArJywgbCk6CisgICAgICAgICAgICBzZWxmLl9oYW5kbGVfc3R5
bGVfZXJyb3IobGluZV9udW1iZXIsICd3aGl0ZXNwYWNlL3BhcmVudGhlc2VzJywgNSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnTm8gc3BhY2UgYWZ0ZXIgIigiJykKKyAg
ICAgICAgIyBjaGVjayBjb21tYW5kIGxpa2UgbWVzc2FnZSgidGVzdGluZyIgKQorICAgICAgICBp
ZiByZS5zZWFyY2goJ1wgK1wpJywgbCkgYW5kIG5vdCByZS5zZWFyY2goJ15cICtcKSQnLCBsKToK
KyAgICAgICAgICAgIHNlbGYuX2hhbmRsZV9zdHlsZV9lcnJvcihsaW5lX251bWJlciwgJ3doaXRl
c3BhY2UvcGFyZW50aGVzZXMnLCA1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICdObyBzcGFjZSBiZWZvcmUgIikiJykKKyAgICAgICAgc2VsZi5fY2hlY2tfdHJhaWxpbmdf
d2hpdGVzcGFjZShsaW5lX251bWJlciwgbCkKKyAgICAgICAgc2VsZi5fY2hlY2tfbm9fc3BhY2Vf
Y21kcyhsaW5lX251bWJlciwgbCkKKyAgICAgICAgc2VsZi5fY2hlY2tfb25lX3NwYWNlX2NtZHMo
bGluZV9udW1iZXIsIGwpCisgICAgICAgIHNlbGYuX2NoZWNrX2luZGVudChsaW5lX251bWJlciwg
bGluZV9jb250ZW50KQorCisgICAgZGVmIF9jaGVja190cmFpbGluZ193aGl0ZXNwYWNlKHNlbGYs
IGxpbmVfbnVtYmVyLCBsaW5lX2NvbnRlbnQpOgorICAgICAgICBsaW5lX2NvbnRlbnQgPSBsaW5l
X2NvbnRlbnQucnN0cmlwKCdcbicpICAgICMgY2hyKDEwKSwgbmV3bGluZQorICAgICAgICBsaW5l
X2NvbnRlbnQgPSBsaW5lX2NvbnRlbnQucnN0cmlwKCdccicpICAgICMgY2hyKDEzKSwgY2Fycmlh
Z2UgcmV0dXJuCisgICAgICAgIGxpbmVfY29udGVudCA9IGxpbmVfY29udGVudC5yc3RyaXAoJ1x4
MGMnKSAgIyBjaHIoMTIpLCBmb3JtIGZlZWQsIF5MCisgICAgICAgIHN0cmlwcGVkID0gbGluZV9j
b250ZW50LnJzdHJpcCgpCisgICAgICAgIGlmIGxpbmVfY29udGVudCAhPSBzdHJpcHBlZDoKKyAg
ICAgICAgICAgIHNlbGYuX2hhbmRsZV9zdHlsZV9lcnJvcihsaW5lX251bWJlciwgJ3doaXRlc3Bh
Y2UvdHJhaWxpbmcnLCA1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdO
byB0cmFpbGluZyBzcGFjZXMnKQorCisgICAgZGVmIF9jaGVja19ub19zcGFjZV9jbWRzKHNlbGYs
IGxpbmVfbnVtYmVyLCBsaW5lX2NvbnRlbnQpOgorICAgICAgICAjIGNoZWNrIGNvbW1hbmQgbGlr
ZSAiU0VUICAgICgiIG9yICJTZXQoIgorICAgICAgICBmb3IgdCBpbiBzZWxmLk5PX1NQQUNFX0NN
RFM6CisgICAgICAgICAgICBzZWxmLl9jaGVja19ub25fbG93ZXJjYXNlX2NtZChsaW5lX251bWJl
ciwgbGluZV9jb250ZW50LCB0KQorICAgICAgICAgICAgaWYgcmUuc2VhcmNoKCcoXnxcICspJyAr
IHQubG93ZXIoKSArICdcICtcKCcsIGxpbmVfY29udGVudCk6CisgICAgICAgICAgICAgICAgbXNn
ID0gJ05vIHNwYWNlIGJldHdlZW4gY29tbWFuZCAiJyArIHQubG93ZXIoKSArICciIGFuZCBpdHMg
cGFyZW50aGVzZXMsIHNob3VsZCBiZSAiJyArIHQgKyAnKCInCisgICAgICAgICAgICAgICAgc2Vs
Zi5faGFuZGxlX3N0eWxlX2Vycm9yKGxpbmVfbnVtYmVyLCAnd2hpdGVzcGFjZS9wYXJlbnRoZXNl
cycsIDUsIG1zZykKKworICAgIGRlZiBfY2hlY2tfb25lX3NwYWNlX2NtZHMoc2VsZiwgbGluZV9u
dW1iZXIsIGxpbmVfY29udGVudCk6CisgICAgICAgICMgY2hlY2sgY29tbWFuZCBsaWtlICJJRiAo
IiBvciAiaWYoIiBvciAiaWYgICAoIiBvciAiSWYgKCkiCisgICAgICAgIGZvciB0IGluIHNlbGYu
T05FX1NQQUNFX0NNRFM6CisgICAgICAgICAgICBzZWxmLl9jaGVja19ub25fbG93ZXJjYXNlX2Nt
ZChsaW5lX251bWJlciwgbGluZV9jb250ZW50LCB0KQorICAgICAgICAgICAgaWYgcmUuc2VhcmNo
KCcoXnxcICspJyArIHQubG93ZXIoKSArICcoXCh8XCBcICtcKCknLCBsaW5lX2NvbnRlbnQpOgor
ICAgICAgICAgICAgICAgIG1zZyA9ICdPbmUgc3BhY2UgYmV0d2VlbiBjb21tYW5kICInICsgdC5s
b3dlcigpICsgJyIgYW5kIGl0cyBwYXJlbnRoZXNlcywgc2hvdWxkIGJlICInICsgdCArICcgKCIn
CisgICAgICAgICAgICAgICAgc2VsZi5faGFuZGxlX3N0eWxlX2Vycm9yKGxpbmVfbnVtYmVyLCAn
d2hpdGVzcGFjZS9wYXJlbnRoZXNlcycsIDUsIG1zZykKKworICAgIGRlZiBfY2hlY2tfbm9uX2xv
d2VyY2FzZV9jbWQoc2VsZiwgbGluZV9udW1iZXIsIGxpbmVfY29udGVudCwgY21kKToKKyAgICAg
ICAgaWYgcmUuc2VhcmNoKCcoXnxcICspJyArIGNtZCArICdcICpcKCcsIGxpbmVfY29udGVudCwg
ZmxhZ3M9cmUuSUdOT1JFQ0FTRSkgYW5kIFwKKyAgICAgICAgICAgKG5vdCByZS5zZWFyY2goJyhe
fFwgKyknICsgY21kLmxvd2VyKCkgKyAnXCAqXCgnLCBsaW5lX2NvbnRlbnQpKToKKyAgICAgICAg
ICAgIG1zZyA9ICdVc2UgbG93ZXJjYXNlIGNvbW1hbmQgIicgKyBjbWQubG93ZXIoKSArICciJwor
ICAgICAgICAgICAgc2VsZi5faGFuZGxlX3N0eWxlX2Vycm9yKGxpbmVfbnVtYmVyLCAnY29tbWFu
ZC9sb3dlcmNhc2UnLCA1LCBtc2cpCisKKyAgICBkZWYgX2NoZWNrX2luZGVudChzZWxmLCBsaW5l
X251bWJlciwgbGluZV9jb250ZW50KToKKyAgICAgICAgI1RPRE8gKGhhbHRvbik6IGFkZCBpbmRl
bnQgY2hlY2tpbmcKKyAgICAgICAgcGFzcwpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9zdHlsZS9jaGVja2Vycy9jbWFrZV91bml0dGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvc3R5bGUvY2hlY2tlcnMvY21ha2VfdW5pdHRlc3QucHkKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjlmZWVk
Y2M2MzZkYmIwNTljNzQ3YjMxMzRiZmM1ZWQxY2U5MzQzNAotLS0gL2Rldi9udWxsCisrKyBiL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvY21ha2VfdW5pdHRlc3QucHkKQEAg
LTAsMCArMSw5MCBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEu
ICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMg
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisjIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVECisjIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyMgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTAorIyBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorIyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorIyBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLAorIyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisi
IiJVbml0IHRlc3QgZm9yIGNtYWtlLnB5LiIiIgorCitpbXBvcnQgdW5pdHRlc3QKKworZnJvbSBj
bWFrZSBpbXBvcnQgQ01ha2VDaGVja2VyCisKKworY2xhc3MgQ01ha2VDaGVja2VyVGVzdCh1bml0
dGVzdC5UZXN0Q2FzZSk6CisKKyAgICAiIiJUZXN0cyBDTWFrZUNoZWNrZXIgY2xhc3MuIiIiCisK
KyAgICBkZWYgdGVzdF9pbml0KHNlbGYpOgorICAgICAgICAiIiJUZXN0IF9faW5pdF9fKCkgbWV0
aG9kLiIiIgorICAgICAgICBkZWYgX21vY2tfaGFuZGxlX3N0eWxlX2Vycm9yKHNlbGYpOgorICAg
ICAgICAgICAgcGFzcworCisgICAgICAgIGNoZWNrZXIgPSBDTWFrZUNoZWNrZXIoImZvby5jbWFr
ZSIsIF9tb2NrX2hhbmRsZV9zdHlsZV9lcnJvcikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChj
aGVja2VyLl9oYW5kbGVfc3R5bGVfZXJyb3IsIF9tb2NrX2hhbmRsZV9zdHlsZV9lcnJvcikKKwor
ICAgIGRlZiB0ZXN0X2NoZWNrKHNlbGYpOgorICAgICAgICAiIiJUZXN0IGNoZWNrKCkgbWV0aG9k
LiIiIgorICAgICAgICBlcnJvcnMgPSBbXQorCisgICAgICAgIGRlZiBfbW9ja19oYW5kbGVfc3R5
bGVfZXJyb3IobGluZV9udW1iZXIsIGNhdGVnb3J5LCBjb25maWRlbmNlLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2UpOgorICAgICAgICAgICAgZXJyb3IgPSAo
bGluZV9udW1iZXIsIGNhdGVnb3J5LCBjb25maWRlbmNlLCBtZXNzYWdlKQorICAgICAgICAgICAg
ZXJyb3JzLmFwcGVuZChlcnJvcikKKworICAgICAgICBjaGVja2VyID0gQ01ha2VDaGVja2VyKCJm
b28uY21ha2UiLCBfbW9ja19oYW5kbGVfc3R5bGVfZXJyb3IpCisKKyAgICAgICAgbGluZXMgPSBb
CisgICAgICAgICAgICAnIyBUaGlzIGZpbGUgaXMgc2FtcGxlIGlucHV0IGZvciBjbWFrZV91bml0
dGVzdC5weSBhbmQgaW5jbHVkZXMgYmVsb3cgcHJvYmxlbXM6XG4nLAorICAgICAgICAgICAgJ0lG
ICgpJywKKyAgICAgICAgICAgICdcdG1lc3NhZ2UoIkVycm9yIGxpbmUgd2l0aCBUYWIiKVxuJywK
KyAgICAgICAgICAgICcgICAgbWVzc2FnZSgiRXJyb3IgbGluZSB3aXRoIGVuZGRpbmcgc3BhY2Vz
IikgICAgXG4nLAorICAgICAgICAgICAgJyAgICBtZXNzYWdlKCAiRXJyb3IgbGluZSB3aXRoIHNw
YWNlIGFmdGVyICgiKVxuJywKKyAgICAgICAgICAgICcgICAgbWVzc2FnZSgiRXJyb3IgbGluZSB3
aXRoIHNwYWNlIGJlZm9yZSAoIiApXG4nLAorICAgICAgICAgICAgJyAgICBNRVNTQUdFKCJFcnJv
ciBsaW5lIHdpdGggdXBwZXIgY2FzZSBub24tY29uZHRpb25hbCBjb21tYW5kIilcbicsCisgICAg
ICAgICAgICAnICAgIE1FU1NhZ2UoIkVycm9yIGxpbmUgd2l0aCB1cHBlciBjYXNlIG5vbi1jb25k
dGlvbmFsIGNvbW1hbmQiKVxuJywKKyAgICAgICAgICAgICcgICAgbWVzc2FnZSgiY29ycmVjdCBt
ZXNzYWdlIGxpbmUiKVxuJywKKyAgICAgICAgICAgICdFTkRpZiAoKVxuJywKKyAgICAgICAgICAg
ICdcbicsCisgICAgICAgICAgICAnaWYoKVxuJywKKyAgICAgICAgICAgICdlbmRpZiAoKVxuJywK
KyAgICAgICAgICAgICdcbicsCisgICAgICAgICAgICAnbWFjcm8gKClcbicsCisgICAgICAgICAg
ICAnRU5ETWFjcm8oKVxuJywKKyAgICAgICAgICAgICdcbicsCisgICAgICAgICAgICAnZnVuY3Rp
b24gICAgKClcbicsCisgICAgICAgICAgICAnZW5kZnVuY3Rpb24oKVxuJywKKyAgICAgICAgICAg
IF0KKyAgICAgICAgY2hlY2tlci5jaGVjayhsaW5lcykKKworICAgICAgICBzZWxmLm1heERpZmYg
PSBOb25lCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXJyb3JzLCBbCisgICAgICAgICAgICAo
MywgJ3doaXRlc3BhY2UvdGFiJywgNSwgJ0xpbmUgY29udGFpbnMgdGFiIGNoYXJhY3Rlci4nKSwK
KyAgICAgICAgICAgICgyLCAnY29tbWFuZC9sb3dlcmNhc2UnLCA1LCAnVXNlIGxvd2VyY2FzZSBj
b21tYW5kICJpZiInKSwKKyAgICAgICAgICAgICg0LCAnd2hpdGVzcGFjZS90cmFpbGluZycsIDUs
ICdObyB0cmFpbGluZyBzcGFjZXMnKSwKKyAgICAgICAgICAgICg1LCAnd2hpdGVzcGFjZS9wYXJl
bnRoZXNlcycsIDUsICdObyBzcGFjZSBhZnRlciAiKCInKSwKKyAgICAgICAgICAgICg2LCAnd2hp
dGVzcGFjZS9wYXJlbnRoZXNlcycsIDUsICdObyBzcGFjZSBiZWZvcmUgIikiJyksCisgICAgICAg
ICAgICAoNywgJ2NvbW1hbmQvbG93ZXJjYXNlJywgNSwgJ1VzZSBsb3dlcmNhc2UgY29tbWFuZCAi
bWVzc2FnZSInKSwKKyAgICAgICAgICAgICg4LCAnY29tbWFuZC9sb3dlcmNhc2UnLCA1LCAnVXNl
IGxvd2VyY2FzZSBjb21tYW5kICJtZXNzYWdlIicpLAorICAgICAgICAgICAgKDEwLCAnY29tbWFu
ZC9sb3dlcmNhc2UnLCA1LCAnVXNlIGxvd2VyY2FzZSBjb21tYW5kICJlbmRpZiInKSwKKyAgICAg
ICAgICAgICgxMiwgJ3doaXRlc3BhY2UvcGFyZW50aGVzZXMnLCA1LCAnT25lIHNwYWNlIGJldHdl
ZW4gY29tbWFuZCAiaWYiIGFuZCBpdHMgcGFyZW50aGVzZXMsIHNob3VsZCBiZSAiaWYgKCInKSwK
KyAgICAgICAgICAgICgxNSwgJ3doaXRlc3BhY2UvcGFyZW50aGVzZXMnLCA1LCAnTm8gc3BhY2Ug
YmV0d2VlbiBjb21tYW5kICJtYWNybyIgYW5kIGl0cyBwYXJlbnRoZXNlcywgc2hvdWxkIGJlICJt
YWNybygiJyksCisgICAgICAgICAgICAoMTYsICdjb21tYW5kL2xvd2VyY2FzZScsIDUsICdVc2Ug
bG93ZXJjYXNlIGNvbW1hbmQgImVuZG1hY3JvIicpLAorICAgICAgICAgICAgKDE4LCAnd2hpdGVz
cGFjZS9wYXJlbnRoZXNlcycsIDUsICdObyBzcGFjZSBiZXR3ZWVuIGNvbW1hbmQgImZ1bmN0aW9u
IiBhbmQgaXRzIHBhcmVudGhlc2VzLCBzaG91bGQgYmUgImZ1bmN0aW9uKCInKSwKKyAgICAgICAg
ICAgIF0pCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>178353</attachid>
            <date>2012-12-08 08:05:22 -0800</date>
            <delta_ts>2012-12-08 23:47:54 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-104240-20121209000527.patch</filename>
            <type>text/plain</type>
            <size>15921</size>
            <attacher name="Halton Huo">halton.huo</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM3MDMwCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNTNlMmUwNTJlZDA1MzI1ZWMyNGY0NDBlNzljZTdkZWM1
ZGQyZTRiNi4uMGFlYzkzYzk2OWQ1NjNkNmM2MmU3ZWNiNTU5NTgyMDY0ZTdkY2VkOCAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0
IEBACisyMDEyLTEyLTA4ICBIYWx0b24gSHVvICA8aGFsdG9uLmh1b0BpbnRlbC5jb20+CisKKyAg
ICAgICAgW0NNYWtlXSBBZGQgQ01ha2Ugc3R5bGUgY2hlY2tlcgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA0MjQwCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhlIENNYWtlIHN0eWxlIGNoZWNrZXIgaXMg
Zm9sbG93ZWQgYnkgZXhpc3Rpbmcgc3R5bGUgY2hlY2tlcnMgbGlrZSBjcHAsIHB5dGhvbi4KKyAg
ICAgICAgVW5pdCB0ZXN0IGlzIGFkZGVkIGFzIHdlbGwuCisKKyAgICAgICAgKiBTY3JpcHRzL3dl
YmtpdHB5L3N0eWxlL2NoZWNrZXIucHk6IFVzZSBDTWFrZUNoZWNrZXIgQ01BS0UgdHlwZSBmaWxl
cyguY21ha2Ugb3IgQ01ha2VMaXN0cy50eHQpCisgICAgICAgIChGaWxlVHlwZSk6CisgICAgICAg
IChDaGVja2VyRGlzcGF0Y2hlci5fZmlsZV90eXBlKToKKyAgICAgICAgKENoZWNrZXJEaXNwYXRj
aGVyLl9jcmVhdGVfY2hlY2tlcik6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9zdHlsZS9j
aGVja2Vycy9jbWFrZS5weTogQWRkZWQuCisgICAgICAgIChDTWFrZUNoZWNrZXIpOgorICAgICAg
ICAoQ01ha2VDaGVja2VyLl9faW5pdF9fKTogCisgICAgICAgIChDTWFrZUNoZWNrZXIuY2hlY2sp
OgorICAgICAgICAoQ01ha2VDaGVja2VyLl9wcm9jZXNzX2xpbmUpOgorICAgICAgICAoQ01ha2VD
aGVja2VyLl9jaGVja190cmFpbGluZ193aGl0ZXNwYWNlKToKKyAgICAgICAgKENNYWtlQ2hlY2tl
ci5fY2hlY2tfbm9fc3BhY2VfY21kcyk6CisgICAgICAgIChDTWFrZUNoZWNrZXIuX2NoZWNrX29u
ZV9zcGFjZV9jbWRzKToKKyAgICAgICAgKENNYWtlQ2hlY2tlci5fY2hlY2tfbm9uX2xvd2VyY2Fz
ZV9jbWQpOgorICAgICAgICAoQ01ha2VDaGVja2VyLl9jaGVja19pbmRlbnQpOgorICAgICAgICAq
IFNjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvY21ha2VfdW5pdHRlc3QucHk6IEFkZGVk
LgorICAgICAgICAoQ01ha2VDaGVja2VyVGVzdCk6CisgICAgICAgIChDTWFrZUNoZWNrZXJUZXN0
LnRlc3RfaW5pdCk6CisgICAgICAgIChDTWFrZUNoZWNrZXJUZXN0LnRlc3RfaW5pdC5fbW9ja19o
YW5kbGVfc3R5bGVfZXJyb3IpOgorICAgICAgICAoQ01ha2VDaGVja2VyVGVzdC50ZXN0X2NoZWNr
KToKKyAgICAgICAgKENNYWtlQ2hlY2tlclRlc3QudGVzdF9jaGVjay5fbW9ja19oYW5kbGVfc3R5
bGVfZXJyb3IpOgorCiAyMDEyLTEyLTA3ICBTY290dCBWaW9sZXQgIDxza3lAY2hyb21pdW0ub3Jn
PgogCiAgICAgICAgIFtjaHJvbWl1bV0gUmVtb3ZlIGxpbnV4IHRoZW1lIHJlbGF0ZWQgZmlsZXMg
YW5kIHN3aXRjaCB0byBkZWZhdWx0CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L3N0eWxlL2NoZWNrZXIucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXIu
cHkKaW5kZXggN2ExNTE4YjViYzk0M2ZlYzgyNGZjMTkwODFkOTQ2NGNmNTIyMmQwNy4uOTM5NTk0
NzFmZjYyMjQ2ZDJjMjlhYzEyMWI4NmMxZjU0ZGI2NTc0MyAxMDA2NDQKLS0tIGEvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2VyLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvc3R5bGUvY2hlY2tlci5weQpAQCAtMzksNiArMzksNyBAQCBmcm9tIGNoZWNrZXJzLmNvbW1v
biBpbXBvcnQgY2F0ZWdvcmllcyBhcyBDb21tb25DYXRlZ29yaWVzCiBmcm9tIGNoZWNrZXJzLmNv
bW1vbiBpbXBvcnQgQ2FycmlhZ2VSZXR1cm5DaGVja2VyCiBmcm9tIGNoZWNrZXJzLmNoYW5nZWxv
ZyBpbXBvcnQgQ2hhbmdlTG9nQ2hlY2tlcgogZnJvbSBjaGVja2Vycy5jcHAgaW1wb3J0IENwcENo
ZWNrZXIKK2Zyb20gY2hlY2tlcnMuY21ha2UgaW1wb3J0IENNYWtlQ2hlY2tlcgogZnJvbSBjaGVj
a2Vycy5qc29uY2hlY2tlciBpbXBvcnQgSlNPTkNoZWNrZXIKIGZyb20gY2hlY2tlcnMucG5nIGlt
cG9ydCBQTkdDaGVja2VyCiBmcm9tIGNoZWNrZXJzLnB5dGhvbiBpbXBvcnQgUHl0aG9uQ2hlY2tl
cgpAQCAtMzA2LDYgKzMwNyw4IEBAIF9YTUxfRklMRV9FWFRFTlNJT05TID0gWwogCiBfUE5HX0ZJ
TEVfRVhURU5TSU9OID0gJ3BuZycKIAorX0NNQUtFX0ZJTEVfRVhURU5TSU9OID0gJ2NtYWtlJwor
CiAjIEZpbGVzIHRvIHNraXAgdGhhdCBhcmUgbGVzcyBvYnZpb3VzLgogIwogIyBTb21lIGZpbGVz
IHNob3VsZCBiZSBza2lwcGVkIHdoZW4gY2hlY2tpbmcgc3R5bGUuIEZvciBleGFtcGxlLApAQCAt
NDk2LDYgKzQ5OSw3IEBAIGNsYXNzIEZpbGVUeXBlOgogICAgIFdBVENITElTVCA9IDcKICAgICBY
TUwgPSA4CiAgICAgWENPREVQUk9KID0gOQorICAgIENNQUtFID0gMTAKIAogCiBjbGFzcyBDaGVj
a2VyRGlzcGF0Y2hlcihvYmplY3QpOgpAQCAtNTc0LDYgKzU3OCw4IEBAIGNsYXNzIENoZWNrZXJE
aXNwYXRjaGVyKG9iamVjdCk6CiAgICAgICAgICAgICByZXR1cm4gRmlsZVR5cGUuWENPREVQUk9K
CiAgICAgICAgIGVsaWYgZmlsZV9leHRlbnNpb24gPT0gX1BOR19GSUxFX0VYVEVOU0lPTjoKICAg
ICAgICAgICAgIHJldHVybiBGaWxlVHlwZS5QTkcKKyAgICAgICAgZWxpZiAoKGZpbGVfZXh0ZW5z
aW9uID09IF9DTUFLRV9GSUxFX0VYVEVOU0lPTikgb3Igb3MucGF0aC5iYXNlbmFtZShmaWxlX3Bh
dGgpID09ICdDTWFrZUxpc3RzLnR4dCcpOgorICAgICAgICAgICAgcmV0dXJuIEZpbGVUeXBlLkNN
QUtFCiAgICAgICAgIGVsaWYgKChub3QgZmlsZV9leHRlbnNpb24gYW5kIG9zLnBhdGguam9pbigi
VG9vbHMiLCAiU2NyaXB0cyIpIGluIGZpbGVfcGF0aCkgb3IKICAgICAgICAgICAgICAgZmlsZV9l
eHRlbnNpb24gaW4gX1RFWFRfRklMRV9FWFRFTlNJT05TIG9yIG9zLnBhdGguYmFzZW5hbWUoZmls
ZV9wYXRoKSA9PSAnVGVzdEV4cGVjdGF0aW9ucycpOgogICAgICAgICAgICAgcmV0dXJuIEZpbGVU
eXBlLlRFWFQKQEAgLTYwNCw2ICs2MTAsOCBAQCBjbGFzcyBDaGVja2VyRGlzcGF0Y2hlcihvYmpl
Y3QpOgogICAgICAgICAgICAgY2hlY2tlciA9IFhjb2RlUHJvamVjdEZpbGVDaGVja2VyKGZpbGVf
cGF0aCwgaGFuZGxlX3N0eWxlX2Vycm9yKQogICAgICAgICBlbGlmIGZpbGVfdHlwZSA9PSBGaWxl
VHlwZS5QTkc6CiAgICAgICAgICAgICBjaGVja2VyID0gUE5HQ2hlY2tlcihmaWxlX3BhdGgsIGhh
bmRsZV9zdHlsZV9lcnJvcikKKyAgICAgICAgZWxpZiBmaWxlX3R5cGUgPT0gRmlsZVR5cGUuQ01B
S0U6CisgICAgICAgICAgICBjaGVja2VyID0gQ01ha2VDaGVja2VyKGZpbGVfcGF0aCwgaGFuZGxl
X3N0eWxlX2Vycm9yKQogICAgICAgICBlbGlmIGZpbGVfdHlwZSA9PSBGaWxlVHlwZS5URVhUOgog
ICAgICAgICAgICAgYmFzZW5hbWUgPSBvcy5wYXRoLmJhc2VuYW1lKGZpbGVfcGF0aCkKICAgICAg
ICAgICAgIGlmIGJhc2VuYW1lID09ICdUZXN0RXhwZWN0YXRpb25zJzoKZGlmZiAtLWdpdCBhL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvY21ha2UucHkgYi9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL2NtYWtlLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA2Yjg5Mjlm
YWI2M2UyMjdiNGFlMDJhZTliZDE3NjM2ZmU5YjllZjEKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL2NtYWtlLnB5CkBAIC0wLDAgKzEsMTUw
IEBACisjIENvcHlyaWdodCAoQykgMjAxMiBJbnRlbCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJlIG1ldDoKKyMgMS4gIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisj
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisjIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorIyAgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
CisKKyIiIlN1cHBvcnRzIGNoZWNraW5nIFdlYktpdCBzdHlsZSBpbiBjbWFrZSBmaWxlcy4oLmNt
YWtlLCBDTWFrZUxpc3RzLnR4dCkiIiIKKworaW1wb3J0IHJlCisKK2Zyb20gY29tbW9uIGltcG9y
dCBUYWJDaGVja2VyCisKKworY2xhc3MgQ01ha2VDaGVja2VyKG9iamVjdCk6CisKKyAgICAiIiJQ
cm9jZXNzZXMgQ01ha2UgbGluZXMgZm9yIGNoZWNraW5nIHN0eWxlLiIiIgorCisgICAgIyBOT19T
UEFDRV9DTURTIGxpc3QgYXJlIGJhc2VkIG9uIGNvbW1hbmRzIHNlY3Rpb24gb2YgQ01ha2UgZG9j
dW1lbnQuCisgICAgIyBOb3cgaXQgaXMgZ2VuZXJhdGVkIGZyb20KKyAgICAjIGh0dHA6Ly93d3cu
Y21ha2Uub3JnL2NtYWtlL2hlbHAvdjIuOC4xMC9jbWFrZS5odG1sI3NlY3Rpb25fQ29tbWFuZHMu
CisgICAgIyBTb21lIGNvbW1hbmRzIGFyZSBmcm9tIGRlZmF1bHQgQ01ha2UgbW9kdWxlcyBzdWNo
IGFzIHBrZ19jaGVja19tb2R1bGVzLgorICAgICMgUGxlYXNlIGtlZXAgbGlzdCBpbiBhbHBoYWJl
dCBvcmRlci4KKyAgICAjCisgICAgIyBGb3IgY29tbWFuZHMgaW4gdGhpcyBsaXN0LCBzcGFjZXMg
c2hvdWxkIG5vdCBiZSBhZGRlZCBpdCBhbmQgaXRzCisgICAgIyBwYXJlbnRoZXNlcy4gRm9yIGVn
LCBtZXNzYWdlKCJ0ZXN0aW5nIiksIG5vdCBtZXNzYWdlICgidGVzdGluZyIpCisgICAgIworICAg
ICMgVGhlIGNvbmRpdGlvbmFsIGNvbW1hbmRzIGxpa2UgaWYsIGVsc2UsIGVuZGlmLCBmb3JlYWNo
LCBlbmRmb3JlYWNoLAorICAgICMgd2hpbGUsIGVuZHdoaWxlIGFuZCBicmVhayBhcmUgbGlzdGVk
IGluIE9ORV9TUEFDRV9DTURTCisgICAgTk9fU1BBQ0VfQ01EUyA9IFsKKyAgICAgICAgJ2FkZF9j
dXN0b21fY29tbWFuZCcsICdhZGRfY3VzdG9tX3RhcmdldCcsICdhZGRfZGVmaW5pdGlvbnMnLAor
ICAgICAgICAnYWRkX2RlcGVuZGVuY2llcycsICdhZGRfZXhlY3V0YWJsZScsICdhZGRfbGlicmFy
eScsCisgICAgICAgICdhZGRfc3ViZGlyZWN0b3J5JywgJ2FkZF90ZXN0JywgJ2F1eF9zb3VyY2Vf
ZGlyZWN0b3J5JywKKyAgICAgICAgJ2J1aWxkX2NvbW1hbmQnLAorICAgICAgICAnY21ha2VfbWlu
aW11bV9yZXF1aXJlZCcsICdjbWFrZV9wb2xpY3knLCAnY29uZmlndXJlX2ZpbGUnLAorICAgICAg
ICAnY3JlYXRlX3Rlc3Rfc291cmNlbGlzdCcsCisgICAgICAgICdkZWZpbmVfcHJvcGVydHknLAor
ICAgICAgICAnZW5hYmxlX2xhbmd1YWdlJywgJ2VuYWJsZV90ZXN0aW5nJywgJ2VuZGZ1bmN0aW9u
JywgJ2VuZG1hY3JvJywKKyAgICAgICAgJ2V4ZWN1dGVfcHJvY2VzcycsICdleHBvcnQnLAorICAg
ICAgICAnZmlsZScsICdmaW5kX2ZpbGUnLCAnZmluZF9saWJyYXJ5JywgJ2ZpbmRfcGFja2FnZScs
ICdmaW5kX3BhdGgnLAorICAgICAgICAnZmluZF9wcm9ncmFtJywgJ2ZsdGtfd3JhcF91aScsICdm
dW5jdGlvbicsCisgICAgICAgICdnZXRfY21ha2VfcHJvcGVydHknLCAnZ2V0X2RpcmVjdG9yeV9w
cm9wZXJ0eScsCisgICAgICAgICdnZXRfZmlsZW5hbWVfY29tcG9uZW50JywgJ2dldF9wcm9wZXJ0
eScsICdnZXRfc291cmNlX2ZpbGVfcHJvcGVydHknLAorICAgICAgICAnZ2V0X3RhcmdldF9wcm9w
ZXJ0eScsICdnZXRfdGVzdF9wcm9wZXJ0eScsCisgICAgICAgICdpbmNsdWRlJywgJ2luY2x1ZGVf
ZGlyZWN0b3JpZXMnLCAnaW5jbHVkZV9leHRlcm5hbF9tc3Byb2plY3QnLAorICAgICAgICAnaW5j
bHVkZV9yZWd1bGFyX2V4cHJlc3Npb24nLCAnaW5zdGFsbCcsCisgICAgICAgICdsaW5rX2RpcmVj
dG9yaWVzJywgJ2xpc3QnLCAnbG9hZF9jYWNoZScsICdsb2FkX2NvbW1hbmQnLAorICAgICAgICAn
bWFjcm8nLCAnbWFya19hc19hZHZhbmNlZCcsICdtYXRoJywgJ21lc3NhZ2UnLAorICAgICAgICAn
b3B0aW9uJywKKyAgICAgICAgI0Zyb20gRmluZFBrZ0NvbmZpZy5jbWFrZQorICAgICAgICAncGtn
X2NoZWNrX21vZHVsZXMnLAorICAgICAgICAncHJvamVjdCcsCisgICAgICAgICdxdF93cmFwX2Nw
cCcsICdxdF93cmFwX3VpJywKKyAgICAgICAgJ3JlbW92ZV9kZWZpbml0aW9ucycsICdyZXR1cm4n
LAorICAgICAgICAnc2VwYXJhdGVfYXJndW1lbnRzJywgJ3NldCcsICdzZXRfZGlyZWN0b3J5X3By
b3BlcnRpZXMnLCAnc2V0X3Byb3BlcnR5JywKKyAgICAgICAgJ3NldF9zb3VyY2VfZmlsZXNfcHJv
cGVydGllcycsICdzZXRfdGFyZ2V0X3Byb3BlcnRpZXMnLAorICAgICAgICAnc2V0X3Rlc3RzX3By
b3BlcnRpZXMnLCAnc2l0ZV9uYW1lJywgJ3NvdXJjZV9ncm91cCcsICdzdHJpbmcnLAorICAgICAg
ICAndGFyZ2V0X2xpbmtfbGlicmFyaWVzJywgJ3RyeV9jb21waWxlJywgJ3RyeV9ydW4nLAorICAg
ICAgICAndW5zZXQnLAorICAgICAgICAndmFyaWFibGVfd2F0Y2gnLAorICAgIF0KKworICAgICMg
Q01ha2UgY29uZGl0aW9uYWwgY29tbWFuZHMsIHJlcXVpcmUgb25lIHNwYWNlIGJldHdlZW4gY29t
bWFuZCBhbmQKKyAgICAjIGl0cyBwYXJlbnRoZXNlcywgc3VjaCBhcyAiaWYgKCIsICJmb3JlYWNo
ICgiLCBldGMuCisgICAgT05FX1NQQUNFX0NNRFMgPSBbCisgICAgICAgICdpZicsICdlbHNlJywg
J2Vsc2VpZicsICdlbmRpZicsCisgICAgICAgICdmb3JlYWNoJywgJ2VuZGZvcmVhY2gnLAorICAg
ICAgICAnd2hpbGUnLCAnZW5kd2hpbGUnLAorICAgICAgICAnYnJlYWsnLAorICAgIF0KKworICAg
IGRlZiBfX2luaXRfXyhzZWxmLCBmaWxlX3BhdGgsIGhhbmRsZV9zdHlsZV9lcnJvcik6CisgICAg
ICAgIHNlbGYuX2hhbmRsZV9zdHlsZV9lcnJvciA9IGhhbmRsZV9zdHlsZV9lcnJvcgorICAgICAg
ICBzZWxmLl90YWJfY2hlY2tlciA9IFRhYkNoZWNrZXIoZmlsZV9wYXRoLCBoYW5kbGVfc3R5bGVf
ZXJyb3IpCisKKyAgICBkZWYgY2hlY2soc2VsZiwgbGluZXMpOgorICAgICAgICBzZWxmLl90YWJf
Y2hlY2tlci5jaGVjayhsaW5lcykKKyAgICAgICAgc2VsZi5fbnVtX2xpbmVzID0gbGVuKGxpbmVz
KQorICAgICAgICBmb3IgbCBpbiB4cmFuZ2Uoc2VsZi5fbnVtX2xpbmVzKToKKyAgICAgICAgICAg
IHNlbGYuX3Byb2Nlc3NfbGluZShsICsgMSwgbGluZXNbbF0pCisKKyAgICBkZWYgX3Byb2Nlc3Nf
bGluZShzZWxmLCBsaW5lX251bWJlciwgbGluZV9jb250ZW50KToKKyAgICAgICAgaWYgcmUubWF0
Y2goJyhefFwgKykjJywgbGluZV9jb250ZW50KToKKyAgICAgICAgICAgICMgaWdub3JlIGNvbW1l
bnQgbGluZQorICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIGwgPSBsaW5lX2NvbnRlbnQuZXhw
YW5kdGFicyg0KQorICAgICAgICAjIGNoZWNrIGNvbW1hbmQgbGlrZSBtZXNzYWdlKCAidGVzdGlu
ZyIpCisgICAgICAgIGlmIHJlLnNlYXJjaCgnXChcICsnLCBsKToKKyAgICAgICAgICAgIHNlbGYu
X2hhbmRsZV9zdHlsZV9lcnJvcihsaW5lX251bWJlciwgJ3doaXRlc3BhY2UvcGFyZW50aGVzZXMn
LCA1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdObyBzcGFjZSBhZnRl
ciAiKCInKQorICAgICAgICAjIGNoZWNrIGNvbW1hbmQgbGlrZSBtZXNzYWdlKCJ0ZXN0aW5nIiAp
CisgICAgICAgIGlmIHJlLnNlYXJjaCgnXCArXCknLCBsKSBhbmQgbm90IHJlLnNlYXJjaCgnXlwg
K1wpJCcsIGwpOgorICAgICAgICAgICAgc2VsZi5faGFuZGxlX3N0eWxlX2Vycm9yKGxpbmVfbnVt
YmVyLCAnd2hpdGVzcGFjZS9wYXJlbnRoZXNlcycsIDUsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJ05vIHNwYWNlIGJlZm9yZSAiKSInKQorICAgICAgICBzZWxmLl9jaGVj
a190cmFpbGluZ193aGl0ZXNwYWNlKGxpbmVfbnVtYmVyLCBsKQorICAgICAgICBzZWxmLl9jaGVj
a19ub19zcGFjZV9jbWRzKGxpbmVfbnVtYmVyLCBsKQorICAgICAgICBzZWxmLl9jaGVja19vbmVf
c3BhY2VfY21kcyhsaW5lX251bWJlciwgbCkKKyAgICAgICAgc2VsZi5fY2hlY2tfaW5kZW50KGxp
bmVfbnVtYmVyLCBsaW5lX2NvbnRlbnQpCisKKyAgICBkZWYgX2NoZWNrX3RyYWlsaW5nX3doaXRl
c3BhY2Uoc2VsZiwgbGluZV9udW1iZXIsIGxpbmVfY29udGVudCk6CisgICAgICAgIGxpbmVfY29u
dGVudCA9IGxpbmVfY29udGVudC5yc3RyaXAoJ1xuJykgICAgIyBjaHIoMTApLCBuZXdsaW5lCisg
ICAgICAgIGxpbmVfY29udGVudCA9IGxpbmVfY29udGVudC5yc3RyaXAoJ1xyJykgICAgIyBjaHIo
MTMpLCBjYXJyaWFnZSByZXR1cm4KKyAgICAgICAgbGluZV9jb250ZW50ID0gbGluZV9jb250ZW50
LnJzdHJpcCgnXHgwYycpICAjIGNocigxMiksIGZvcm0gZmVlZCwgXkwKKyAgICAgICAgc3RyaXBw
ZWQgPSBsaW5lX2NvbnRlbnQucnN0cmlwKCkKKyAgICAgICAgaWYgbGluZV9jb250ZW50ICE9IHN0
cmlwcGVkOgorICAgICAgICAgICAgc2VsZi5faGFuZGxlX3N0eWxlX2Vycm9yKGxpbmVfbnVtYmVy
LCAnd2hpdGVzcGFjZS90cmFpbGluZycsIDUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJ05vIHRyYWlsaW5nIHNwYWNlcycpCisKKyAgICBkZWYgX2NoZWNrX25vX3NwYWNl
X2NtZHMoc2VsZiwgbGluZV9udW1iZXIsIGxpbmVfY29udGVudCk6CisgICAgICAgICMgY2hlY2sg
Y29tbWFuZCBsaWtlICJTRVQgICAgKCIgb3IgIlNldCgiCisgICAgICAgIGZvciB0IGluIHNlbGYu
Tk9fU1BBQ0VfQ01EUzoKKyAgICAgICAgICAgIHNlbGYuX2NoZWNrX25vbl9sb3dlcmNhc2VfY21k
KGxpbmVfbnVtYmVyLCBsaW5lX2NvbnRlbnQsIHQpCisgICAgICAgICAgICBpZiByZS5zZWFyY2go
JyhefFwgKyknICsgdC5sb3dlcigpICsgJ1wgK1woJywgbGluZV9jb250ZW50KToKKyAgICAgICAg
ICAgICAgICBtc2cgPSAnTm8gc3BhY2UgYmV0d2VlbiBjb21tYW5kICInICsgdC5sb3dlcigpICsg
JyIgYW5kIGl0cyBwYXJlbnRoZXNlcywgc2hvdWxkIGJlICInICsgdCArICcoIicKKyAgICAgICAg
ICAgICAgICBzZWxmLl9oYW5kbGVfc3R5bGVfZXJyb3IobGluZV9udW1iZXIsICd3aGl0ZXNwYWNl
L3BhcmVudGhlc2VzJywgNSwgbXNnKQorCisgICAgZGVmIF9jaGVja19vbmVfc3BhY2VfY21kcyhz
ZWxmLCBsaW5lX251bWJlciwgbGluZV9jb250ZW50KToKKyAgICAgICAgIyBjaGVjayBjb21tYW5k
IGxpa2UgIklGICgiIG9yICJpZigiIG9yICJpZiAgICgiIG9yICJJZiAoKSIKKyAgICAgICAgZm9y
IHQgaW4gc2VsZi5PTkVfU1BBQ0VfQ01EUzoKKyAgICAgICAgICAgIHNlbGYuX2NoZWNrX25vbl9s
b3dlcmNhc2VfY21kKGxpbmVfbnVtYmVyLCBsaW5lX2NvbnRlbnQsIHQpCisgICAgICAgICAgICBp
ZiByZS5zZWFyY2goJyhefFwgKyknICsgdC5sb3dlcigpICsgJyhcKHxcIFwgK1woKScsIGxpbmVf
Y29udGVudCk6CisgICAgICAgICAgICAgICAgbXNnID0gJ09uZSBzcGFjZSBiZXR3ZWVuIGNvbW1h
bmQgIicgKyB0Lmxvd2VyKCkgKyAnIiBhbmQgaXRzIHBhcmVudGhlc2VzLCBzaG91bGQgYmUgIicg
KyB0ICsgJyAoIicKKyAgICAgICAgICAgICAgICBzZWxmLl9oYW5kbGVfc3R5bGVfZXJyb3IobGlu
ZV9udW1iZXIsICd3aGl0ZXNwYWNlL3BhcmVudGhlc2VzJywgNSwgbXNnKQorCisgICAgZGVmIF9j
aGVja19ub25fbG93ZXJjYXNlX2NtZChzZWxmLCBsaW5lX251bWJlciwgbGluZV9jb250ZW50LCBj
bWQpOgorICAgICAgICBpZiByZS5zZWFyY2goJyhefFwgKyknICsgY21kICsgJ1wgKlwoJywgbGlu
ZV9jb250ZW50LCBmbGFncz1yZS5JR05PUkVDQVNFKSBhbmQgXAorICAgICAgICAgICAobm90IHJl
LnNlYXJjaCgnKF58XCArKScgKyBjbWQubG93ZXIoKSArICdcICpcKCcsIGxpbmVfY29udGVudCkp
OgorICAgICAgICAgICAgbXNnID0gJ1VzZSBsb3dlcmNhc2UgY29tbWFuZCAiJyArIGNtZC5sb3dl
cigpICsgJyInCisgICAgICAgICAgICBzZWxmLl9oYW5kbGVfc3R5bGVfZXJyb3IobGluZV9udW1i
ZXIsICdjb21tYW5kL2xvd2VyY2FzZScsIDUsIG1zZykKKworICAgIGRlZiBfY2hlY2tfaW5kZW50
KHNlbGYsIGxpbmVfbnVtYmVyLCBsaW5lX2NvbnRlbnQpOgorICAgICAgICAjVE9ETyAoaGFsdG9u
KTogYWRkIGluZGVudCBjaGVja2luZworICAgICAgICBwYXNzCmRpZmYgLS1naXQgYS9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL2NtYWtlX3VuaXR0ZXN0LnB5IGIvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy9jbWFrZV91bml0dGVzdC5weQpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5mOWZlZWRjYzYzNmRiYjA1OWM3NDdiMzEzNGJmYzVlZDFjZTkzNDM0Ci0tLSAvZGV2L251
bGwKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy9jbWFrZV91bml0
dGVzdC5weQpAQCAtMCwwICsxLDkwIEBACisjIENvcHlyaWdodCAoQykgMjAxMiBJbnRlbCBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyMgYXJl
IG1ldDoKKyMgMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisjICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorIyAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyMgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFIElNUExJRUQKKyMgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorIyBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUgor
IyBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMCisjIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCisjIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
CisjIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksCisjIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisKKyIiIlVuaXQgdGVzdCBmb3IgY21ha2UucHkuIiIiCisKK2ltcG9ydCB1bml0dGVz
dAorCitmcm9tIGNtYWtlIGltcG9ydCBDTWFrZUNoZWNrZXIKKworCitjbGFzcyBDTWFrZUNoZWNr
ZXJUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgICIiIlRlc3RzIENNYWtlQ2hlY2tlciBj
bGFzcy4iIiIKKworICAgIGRlZiB0ZXN0X2luaXQoc2VsZik6CisgICAgICAgICIiIlRlc3QgX19p
bml0X18oKSBtZXRob2QuIiIiCisgICAgICAgIGRlZiBfbW9ja19oYW5kbGVfc3R5bGVfZXJyb3Io
c2VsZik6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgY2hlY2tlciA9IENNYWtlQ2hlY2tl
cigiZm9vLmNtYWtlIiwgX21vY2tfaGFuZGxlX3N0eWxlX2Vycm9yKQorICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKGNoZWNrZXIuX2hhbmRsZV9zdHlsZV9lcnJvciwgX21vY2tfaGFuZGxlX3N0eWxl
X2Vycm9yKQorCisgICAgZGVmIHRlc3RfY2hlY2soc2VsZik6CisgICAgICAgICIiIlRlc3QgY2hl
Y2soKSBtZXRob2QuIiIiCisgICAgICAgIGVycm9ycyA9IFtdCisKKyAgICAgICAgZGVmIF9tb2Nr
X2hhbmRsZV9zdHlsZV9lcnJvcihsaW5lX251bWJlciwgY2F0ZWdvcnksIGNvbmZpZGVuY2UsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZSk6CisgICAgICAgICAg
ICBlcnJvciA9IChsaW5lX251bWJlciwgY2F0ZWdvcnksIGNvbmZpZGVuY2UsIG1lc3NhZ2UpCisg
ICAgICAgICAgICBlcnJvcnMuYXBwZW5kKGVycm9yKQorCisgICAgICAgIGNoZWNrZXIgPSBDTWFr
ZUNoZWNrZXIoImZvby5jbWFrZSIsIF9tb2NrX2hhbmRsZV9zdHlsZV9lcnJvcikKKworICAgICAg
ICBsaW5lcyA9IFsKKyAgICAgICAgICAgICcjIFRoaXMgZmlsZSBpcyBzYW1wbGUgaW5wdXQgZm9y
IGNtYWtlX3VuaXR0ZXN0LnB5IGFuZCBpbmNsdWRlcyBiZWxvdyBwcm9ibGVtczpcbicsCisgICAg
ICAgICAgICAnSUYgKCknLAorICAgICAgICAgICAgJ1x0bWVzc2FnZSgiRXJyb3IgbGluZSB3aXRo
IFRhYiIpXG4nLAorICAgICAgICAgICAgJyAgICBtZXNzYWdlKCJFcnJvciBsaW5lIHdpdGggZW5k
ZGluZyBzcGFjZXMiKSAgICBcbicsCisgICAgICAgICAgICAnICAgIG1lc3NhZ2UoICJFcnJvciBs
aW5lIHdpdGggc3BhY2UgYWZ0ZXIgKCIpXG4nLAorICAgICAgICAgICAgJyAgICBtZXNzYWdlKCJF
cnJvciBsaW5lIHdpdGggc3BhY2UgYmVmb3JlICgiIClcbicsCisgICAgICAgICAgICAnICAgIE1F
U1NBR0UoIkVycm9yIGxpbmUgd2l0aCB1cHBlciBjYXNlIG5vbi1jb25kdGlvbmFsIGNvbW1hbmQi
KVxuJywKKyAgICAgICAgICAgICcgICAgTUVTU2FnZSgiRXJyb3IgbGluZSB3aXRoIHVwcGVyIGNh
c2Ugbm9uLWNvbmR0aW9uYWwgY29tbWFuZCIpXG4nLAorICAgICAgICAgICAgJyAgICBtZXNzYWdl
KCJjb3JyZWN0IG1lc3NhZ2UgbGluZSIpXG4nLAorICAgICAgICAgICAgJ0VORGlmICgpXG4nLAor
ICAgICAgICAgICAgJ1xuJywKKyAgICAgICAgICAgICdpZigpXG4nLAorICAgICAgICAgICAgJ2Vu
ZGlmICgpXG4nLAorICAgICAgICAgICAgJ1xuJywKKyAgICAgICAgICAgICdtYWNybyAoKVxuJywK
KyAgICAgICAgICAgICdFTkRNYWNybygpXG4nLAorICAgICAgICAgICAgJ1xuJywKKyAgICAgICAg
ICAgICdmdW5jdGlvbiAgICAoKVxuJywKKyAgICAgICAgICAgICdlbmRmdW5jdGlvbigpXG4nLAor
ICAgICAgICAgICAgXQorICAgICAgICBjaGVja2VyLmNoZWNrKGxpbmVzKQorCisgICAgICAgIHNl
bGYubWF4RGlmZiA9IE5vbmUKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlcnJvcnMsIFsKKyAg
ICAgICAgICAgICgzLCAnd2hpdGVzcGFjZS90YWInLCA1LCAnTGluZSBjb250YWlucyB0YWIgY2hh
cmFjdGVyLicpLAorICAgICAgICAgICAgKDIsICdjb21tYW5kL2xvd2VyY2FzZScsIDUsICdVc2Ug
bG93ZXJjYXNlIGNvbW1hbmQgImlmIicpLAorICAgICAgICAgICAgKDQsICd3aGl0ZXNwYWNlL3Ry
YWlsaW5nJywgNSwgJ05vIHRyYWlsaW5nIHNwYWNlcycpLAorICAgICAgICAgICAgKDUsICd3aGl0
ZXNwYWNlL3BhcmVudGhlc2VzJywgNSwgJ05vIHNwYWNlIGFmdGVyICIoIicpLAorICAgICAgICAg
ICAgKDYsICd3aGl0ZXNwYWNlL3BhcmVudGhlc2VzJywgNSwgJ05vIHNwYWNlIGJlZm9yZSAiKSIn
KSwKKyAgICAgICAgICAgICg3LCAnY29tbWFuZC9sb3dlcmNhc2UnLCA1LCAnVXNlIGxvd2VyY2Fz
ZSBjb21tYW5kICJtZXNzYWdlIicpLAorICAgICAgICAgICAgKDgsICdjb21tYW5kL2xvd2VyY2Fz
ZScsIDUsICdVc2UgbG93ZXJjYXNlIGNvbW1hbmQgIm1lc3NhZ2UiJyksCisgICAgICAgICAgICAo
MTAsICdjb21tYW5kL2xvd2VyY2FzZScsIDUsICdVc2UgbG93ZXJjYXNlIGNvbW1hbmQgImVuZGlm
IicpLAorICAgICAgICAgICAgKDEyLCAnd2hpdGVzcGFjZS9wYXJlbnRoZXNlcycsIDUsICdPbmUg
c3BhY2UgYmV0d2VlbiBjb21tYW5kICJpZiIgYW5kIGl0cyBwYXJlbnRoZXNlcywgc2hvdWxkIGJl
ICJpZiAoIicpLAorICAgICAgICAgICAgKDE1LCAnd2hpdGVzcGFjZS9wYXJlbnRoZXNlcycsIDUs
ICdObyBzcGFjZSBiZXR3ZWVuIGNvbW1hbmQgIm1hY3JvIiBhbmQgaXRzIHBhcmVudGhlc2VzLCBz
aG91bGQgYmUgIm1hY3JvKCInKSwKKyAgICAgICAgICAgICgxNiwgJ2NvbW1hbmQvbG93ZXJjYXNl
JywgNSwgJ1VzZSBsb3dlcmNhc2UgY29tbWFuZCAiZW5kbWFjcm8iJyksCisgICAgICAgICAgICAo
MTgsICd3aGl0ZXNwYWNlL3BhcmVudGhlc2VzJywgNSwgJ05vIHNwYWNlIGJldHdlZW4gY29tbWFu
ZCAiZnVuY3Rpb24iIGFuZCBpdHMgcGFyZW50aGVzZXMsIHNob3VsZCBiZSAiZnVuY3Rpb24oIicp
LAorICAgICAgICAgICAgXSkK
</data>

          </attachment>
      

    </bug>

</bugzilla>