<?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>51103</bug_id>
          
          <creation_ts>2010-12-15 04:54:28 -0800</creation_ts>
          <short_desc>check-webkit-style should check for XML syntax errors in .vcproj/.vsprops files</short_desc>
          <delta_ts>2010-12-16 14:11:33 -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>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>51139</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Adam Roben (:aroben)">aroben</reporter>
          <assigned_to name="Adam Roben (:aroben)">aroben</assigned_to>
          <cc>cjerdonek</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>eric</cc>
    
    <cc>hamaji</cc>
    
    <cc>levin</cc>
    
    <cc>ojan</cc>
    
    <cc>sfalken</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>322573</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2010-12-15 04:54:28 -0800</bug_when>
    <thetext>It&apos;s a pretty common mistake for people to introduce XML syntax errors into .vcproj/.vsprops when editing them by hand (see bug 51029 comment 3 for some examples). It would be great if check-webkit-style could catch these errors!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>322589</commentid>
    <comment_count>1</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2010-12-15 06:54:19 -0800</bug_when>
    <thetext>Sounds like you want a new checker.

Here&apos;s how to do that:

1. Add a new checker
  a. Create a file WebKitTools/Scripts/webkitpy/style/checkers/vc_proj.py
  b. Fill in the checker to do what you want. 
     i. Use WebKitTools/Scripts/webkitpy/style/checkers/text.py as a simple example.  
    ii. Name it something like VcProjChecker
  c. Create a simple unit test for it. ?(WebKitTools/Scripts/webkitpy/style/checkers/text_unittest.py is a nice example)


2. You need to teach the style checker about the new file type:
  a. In WebKitTools/Scripts/webkitpy/style/checker.py
      Add a new file type to
         class FileType:
      Something like VCPROJ
   b. Make CheckerDispatcher._file_type return this file type for vcproj/vsprops files.
   c. Make CheckerDispatcher._create_checker return your new checker: VCProjChecker

3. Enjoy the fact that these error will be caught automatically.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>322607</commentid>
    <comment_count>2</comment_count>
      <attachid>76648</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2010-12-15 08:18:37 -0800</bug_when>
    <thetext>Created attachment 76648
Teach check-webkit-style to check .vcproj and .vsprops files for XML syntax errors</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>322805</commentid>
    <comment_count>3</comment_count>
      <attachid>76648</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2010-12-15 14:12:10 -0800</bug_when>
    <thetext>Comment on attachment 76648
Teach check-webkit-style to check .vcproj and .vsprops files for XML syntax errors

Excellent!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>322877</commentid>
    <comment_count>4</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2010-12-15 15:33:57 -0800</bug_when>
    <thetext>Committed r74149: &lt;http://trac.webkit.org/changeset/74149&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>322905</commentid>
    <comment_count>5</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2010-12-15 15:59:58 -0800</bug_when>
    <thetext>Committed r74158: &lt;http://trac.webkit.org/changeset/74158&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>322920</commentid>
    <comment_count>6</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2010-12-15 16:18:55 -0800</bug_when>
    <thetext>Ojan something went wrong here.... Was it the commit queue or something done by hand, etc.?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>322949</commentid>
    <comment_count>7</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2010-12-15 17:00:28 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; Ojan something went wrong here.... Was it the commit queue or something done by hand, etc.?

It was webkit-patch. This is the age-old problem of webkit-patch doing the wrong thing if the new changelog entry is not at the top. Alterately, the bug is with resolve-ChangeLogs, which did not put the changelog entry at the top when I synced.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>322959</commentid>
    <comment_count>8</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-12-15 17:08:39 -0800</bug_when>
    <thetext>https://bugs.webkit.org/show_bug.cgi?id=28291</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>323416</commentid>
    <comment_count>9</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-12-16 14:09:31 -0800</bug_when>
    <thetext>This caused a python warning when running the tests under python 2.6

Something about BaseException.message being deprecated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>323417</commentid>
    <comment_count>10</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2010-12-16 14:11:33 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; This caused a python warning when running the tests under python 2.6
&gt; 
&gt; Something about BaseException.message being deprecated.

Fix is here https://bugs.webkit.org/show_bug.cgi?id=51210</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>76648</attachid>
            <date>2010-12-15 08:18:37 -0800</date>
            <delta_ts>2010-12-15 14:12:09 -0800</delta_ts>
            <desc>Teach check-webkit-style to check .vcproj and .vsprops files for XML syntax errors</desc>
            <filename>bug-51103-20101215111849.patch</filename>
            <type>text/plain</type>
            <size>18189</size>
            <attacher name="Adam Roben (:aroben)">aroben</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCAzYWM2YzY2NWU0MWYyNGVlMGI3YWNkNDY2YjlmZjQwYmQ2ZjZkNGE5Li4xZmMyODZj
MmU3OWJmZDcxNTYzOGRmZDkzNjdhYmYzZWE4MThhODljIDEwMDY0NAotLS0gYS9XZWJLaXRUb29s
cy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjUgQEAK
KzIwMTAtMTItMTUgIEFkYW0gUm9iZW4gIDxhcm9iZW5AYXBwbGUuY29tPgorCisgICAgICAgIFRl
YWNoIGNoZWNrLXdlYmtpdC1zdHlsZSB0byBjaGVjayAudmNwcm9qIGFuZCAudnNwcm9wcyBmaWxl
cyBmb3IgWE1MCisgICAgICAgIHN5bnRheCBlcnJvcnMKKworICAgICAgICBGaXhlcyA8aHR0cDov
L3dlYmtpdC5vcmcvYi81MTEwMz4gY2hlY2std2Via2l0LXN0eWxlIHNob3VsZCBjaGVjayBmb3IK
KyAgICAgICAgWE1MIHN5bnRheCBlcnJvcnMgaW4gLnZjcHJvai8udnNwcm9wcyBmaWxlcworCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU2NyaXB0cy93
ZWJraXRweS9zdHlsZS9jaGVja2VyLnB5OiBBZGRlZCBsaXN0cyBvZiBmaWxlIGV4dGVuc2lvbnMK
KyAgICAgICAgdGhhdCBzaG91bGQgYmUgdHJlYXRlZCBhcyBYTUwgYW5kIHRoYXQgc2hvdWxkIGJl
IGFsbG93ZWQgdG8gY29udGFpbgorICAgICAgICBjYXJyaWFnZSByZXR1cm5zLiAoVGhlc2UgbGlz
dHMgaGFwcGVuIHRvIGJlIGlkZW50aWNhbCBjdXJyZW50bHkuKQorICAgICAgICAoRmlsZVR5cGUp
OiBBZGRlZCBhIG5ldyBYTUwgdHlwZS4KKyAgICAgICAgKENoZWNrZXJEaXNwYXRjaGVyLnNob3Vs
ZF9jaGVja19hbmRfc3RyaXBfY2FycmlhZ2VfcmV0dXJucyk6IEFkZGVkLgorICAgICAgICBKdXN0
IGRvZXMgYSBzaW1wbGUgZmlsZSBleHRlbnNpb24gY2hlY2suCisgICAgICAgIChDaGVja2VyRGlz
cGF0Y2hlci5fZmlsZV90eXBlKTogQWRkZWQgYSBjYXNlIGZvciBYTUwgZmlsZXMuCisgICAgICAg
IChDaGVja2VyRGlzcGF0Y2hlci5fY3JlYXRlX2NoZWNrZXIpCisgICAgICAgIChTdHlsZVByb2Nl
c3Nvci5wcm9jZXNzKTogQXNrIHRoZSBkaXNwYXRjaGVyIHdoZXRoZXIgd2Ugc2hvdWxkIHBhc3Mg
dGhlCisgICAgICAgIGxpbmVzIHRocm91Z2ggdGhlIGNhcnJpYWdlIGNoZWNrZXIuCisKKyAgICAg
ICAgKiBTY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJfdW5pdHRlc3QucHk6CisgICAgICAg
IChDaGVja2VyRGlzcGF0Y2hlckNhcnJpYWdlUmV0dXJuVGVzdC50ZXN0X3Nob3VsZF9jaGVja19h
bmRfc3RyaXBfY2FycmlhZ2VfcmV0dXJucyk6CisgICAgICAgIEFkZGVkLiBDaGVja3MgYSBmZXcg
ZmlsZSBuYW1lcyB0byBzZWUgaWYgY2FycmlhZ2UgcmV0dXJucyBhcmUgYWxsb3dlZAorICAgICAg
ICBvciBub3QuCisgICAgICAgIChDaGVja2VyRGlzcGF0Y2hlckRpc3BhdGNoVGVzdC5hc3NlcnRf
Y2hlY2tlcl94bWwpOiBBZGRlZC4gU2ltaWxhciB0bworICAgICAgICBvdGhlciBhc3NlcnRfY2hl
Y2tlcl8qIGZ1bmN0aW9ucy4KKyAgICAgICAgKENoZWNrZXJEaXNwYXRjaGVyRGlzcGF0Y2hUZXN0
LnRlc3RfeG1sX3BhdGhzKTogQWRkZWQuIFNpbWlsYXIgdG8gb3RoZXIKKyAgICAgICAgdGVzdF8q
X3BhdGhzIGZ1bmN0aW9ucy4KKyAgICAgICAgKENoZWNrZXJEaXNwYXRjaGVyRGlzcGF0Y2hUZXN0
LnRlc3RfeG1sX3BhdGhzKTogQWRkZWQuIFNpbWlsYXIgdG8gb3RoZXIKKyAgICAgICAgdGVzdF8q
X3BhdGhzIGZ1bmN0aW9ucy4KKyAgICAgICAgKENoZWNrZXJEaXNwYXRjaGVyRGlzcGF0Y2hUZXN0
LnRlc3Rfbm9uZV9wYXRocyk6IFJlbW92ZWQgdGhlIHZjcHJvagorICAgICAgICBmaWxlIGZyb20g
dGhpcyB0ZXN0IGNhc2UsIGFzIHZjcHJvaiBmaWxlcyBub3cgaGF2ZSBhIHR5cGUuCisgICAgICAg
IChTdHlsZVByb2Nlc3Nvcl9Db2RlQ292ZXJhZ2VUZXN0Lk1vY2tEaXNwYXRjaGVyLnNob3VsZF9j
aGVja19hbmRfc3RyaXBfY2FycmlhZ2VfcmV0dXJucyk6CisgICAgICAgIEFkZGVkLiBTaW1pbGFy
IHRvIHRoZSBvdGhlciBzaG91bGRfKiBmdW5jdGlvbnMuCisgICAgICAgIChTdHlsZVByb2Nlc3Nv
cl9Db2RlQ292ZXJhZ2VUZXN0LnRlc3RfcHJvY2Vzc19fY2FycmlhZ2VfcmV0dXJuc19ub3Rfc3Ry
aXBwZWQpOgorICAgICAgICBBZGRlZC4gQ2hlY2tzIHRoYXQgY2FycmlhZ2UgcmV0dXJucyBhcmVu
J3QgY2hlY2tlZCBmb3Igb3Igc3RyaXBwZWQgZm9yCisgICAgICAgIGFsbG93ZWQgZmlsZXMuCisK
KyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL3htbC5weTogQWRkZWQu
CisgICAgICAgIChYTUxDaGVja2VyLl9faW5pdF9fKTogU2ltcGxlIGluaXQgbWV0aG9kLgorICAg
ICAgICAoWE1MQ2hlY2tlci5jaGVjayk6IFBhc3MgZWFjaCBsaW5lIHRocm91Z2ggdGhlIGV4cGF0
IHBhcnNlciwgYW5kIHJlY29yZAorICAgICAgICBhIHN0eWxlIGVycm9yIGZvciBhbnkgZXJyb3Jz
IHRocm93biBieSB0aGUgcGFyc2VyLgorCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9zdHls
ZS9jaGVja2Vycy94bWxfdW5pdHRlc3QucHk6IEFkZGVkLgorICAgICAgICAoWE1MQ2hlY2tlclRl
c3QuYXNzZXJ0X25vX2Vycm9yKTogQ2hlY2tzIHRoYXQgdGhlIGdpdmVuIFhNTCBkb2VzIG5vdAor
ICAgICAgICBwcm9kdWNlIGEgc3R5bGUgZXJyb3IuCisgICAgICAgIChYTUxDaGVja2VyVGVzdC5h
c3NlcnRfZXJyb3IpOiBDaGVja3MgdGhhdCB0aGUgZ2l2ZW4gWE1MIHByb2R1Y2VzIGFuCisgICAg
ICAgIGVycm9yIG9mIHRoZSBnaXZlbiBjYXRlZ29yeSBvbiB0aGUgZ2l2ZW4gbGluZS4KKyAgICAg
ICAgKFhNTENoZWNrZXJUZXN0Lm1vY2tfaGFuZGxlX3N0eWxlX2Vycm9yKTogRG9lcyBub3RoaW5n
LiBVc2VkIGZvcgorICAgICAgICBjaGVja2luZyB0aGF0IHRoZSBYTUxDaGVja2VyIGNvbnN0cnVj
dG9yIHdvcmtzIHByb3Blcmx5LgorICAgICAgICAoWE1MQ2hlY2tlclRlc3QudGVzdF9jb25mbGlj
dF9tYXJrZXIpOiBUZXN0cyB0aGF0IGNvbmZsaWN0IG1hcmtlcnMKKyAgICAgICAgY2F1c2UgYSBz
dHlsZSBlcnJvciAoc2VlLCBlLmcuLCByNzM4ODcpLgorICAgICAgICAoWE1MQ2hlY2tlclRlc3Qu
dGVzdF9leHRyYV9jbG9zaW5nX3RhZyk6IFRlc3RzIHRoYXQgZXh0cmEgY2xvc2luZyB0YWdzCisg
ICAgICAgIGNhdXNlIGEgc3R5bGUgZXJyb3IgKHNlZSwgZS5nLiwgcjczNzczKS4KKyAgICAgICAg
KFhNTENoZWNrZXJUZXN0LnRlc3RfaW5pdCk6IFRlc3RzIHRoYXQgdGhlIFhNTENoZWNrZXIgY29u
c3RydWN0b3Igd29ya3MKKyAgICAgICAgcHJvcGVybHkuCisgICAgICAgIChYTUxDaGVja2VyVGVz
dC50ZXN0X21pc3NpbmdfY2xvc2luZ190YWcpOiBUZXN0cyB0aGF0IG1pc3NpbmcgY2xvc2luZwor
ICAgICAgICB0YWdzIGNhdXNlIGEgc3R5bGUgZXJyb3IgKHNlZSwgZS5nLiwgcjcyNzk1KS4KKyAg
ICAgICAgKFhNTENoZWNrZXJUZXN0LnRlc3Rfbm9fZXJyb3IpOiBUZXN0cyB0aGF0IHZhbGlkIFhN
TCBkb2VzIG5vdCBjYXVzZSBhCisgICAgICAgIHN0eWxlIGVycm9yLgorCiAyMDEwLTEyLTE0ICBQ
aGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KIAogICAgICAgICBSZXZpZXdl
ZCBieSBPamFuIFZhZmFpLgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9zdHlsZS9jaGVja2VyLnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9j
aGVja2VyLnB5CmluZGV4IGUxMGVlYzU5ZDQ1OGMwNjkzN2QwNWJhZjAzYmQ5NzYyZmQ2ZTllZmYu
LmU5ZWE4ZWU4YWYxZDNkN2FlYjczMzJkNjQ3OTI3NWFiMTI5ZTRhOTkgMTAwNjQ0Ci0tLSBhL1dl
YktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlci5weQorKysgYi9XZWJLaXRU
b29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXIucHkKQEAgLTQwLDYgKzQwLDcgQEAg
ZnJvbSBjaGVja2Vycy5jcHAgaW1wb3J0IENwcENoZWNrZXIKIGZyb20gY2hlY2tlcnMucHl0aG9u
IGltcG9ydCBQeXRob25DaGVja2VyCiBmcm9tIGNoZWNrZXJzLnRlc3RfZXhwZWN0YXRpb25zIGlt
cG9ydCBUZXN0RXhwZWN0YXRpb25zQ2hlY2tlcgogZnJvbSBjaGVja2Vycy50ZXh0IGltcG9ydCBU
ZXh0Q2hlY2tlcgorZnJvbSBjaGVja2Vycy54bWwgaW1wb3J0IFhNTENoZWNrZXIKIGZyb20gZXJy
b3JfaGFuZGxlcnMgaW1wb3J0IERlZmF1bHRTdHlsZUVycm9ySGFuZGxlcgogZnJvbSBmaWx0ZXIg
aW1wb3J0IEZpbHRlckNvbmZpZ3VyYXRpb24KIGZyb20gb3B0cGFyc2VyIGltcG9ydCBBcmd1bWVu
dFBhcnNlcgpAQCAtMTk2LDkgKzE5Nyw2IEBAIF9DUFBfRklMRV9FWFRFTlNJT05TID0gWwogCiBf
UFlUSE9OX0ZJTEVfRVhURU5TSU9OID0gJ3B5JwogCi0jIEZJWE1FOiBJbmNsdWRlICd2Y3Byb2on
IGZpbGVzIGFzIHRleHQgZmlsZXMgYWZ0ZXIgY3JlYXRpbmcgYSBtZWNoYW5pc20KLSMgICAgICAg
IGZvciBleGVtcHRpbmcgdGhlbSBmcm9tIHRoZSBjYXJyaWFnZS1yZXR1cm4gY2hlY2tlciAoc2lu
Y2UgdGhleQotIyAgICAgICAgYXJlIFdpbmRvd3Mtb25seSBmaWxlcykuCiBfVEVYVF9GSUxFX0VY
VEVOU0lPTlMgPSBbCiAgICAgJ2FjJywKICAgICAnY2MnLApAQCAtMjIxLDEyICsyMTksMTUgQEAg
X1RFWFRfRklMRV9FWFRFTlNJT05TID0gWwogICAgICdyYicsCiAgICAgJ3NoJywKICAgICAndHh0
JywKLSMgICAndmNwcm9qJywgICMgU2VlIEZJWE1FIGFib3ZlLgogICAgICd3bScsCiAgICAgJ3ho
dG1sJywKICAgICAneScsCiAgICAgXQogCitfWE1MX0ZJTEVfRVhURU5TSU9OUyA9IFsKKyAgICAn
dmNwcm9qJywKKyAgICAndnNwcm9wcycsCisgICAgXQogCiAjIEZpbGVzIHRvIHNraXAgdGhhdCBh
cmUgbGVzcyBvYnZpb3VzLgogIwpAQCAtMjUyLDYgKzI1MywxMSBAQCBfU0tJUFBFRF9GSUxFU19X
SVRIT1VUX1dBUk5JTkcgPSBbCiAgICAgIkxheW91dFRlc3RzLyIsCiAgICAgXQogCisjIEV4dGVu
c2lvbnMgb2YgZmlsZXMgd2hpY2ggYXJlIGFsbG93ZWQgdG8gY29udGFpbiBjYXJyaWFnZSByZXR1
cm5zLgorX0NBUlJJQUdFX1JFVFVSTl9BTExPV0VEX0ZJTEVfRVhURU5TSU9OUyA9IFsKKyAgICAn
dmNwcm9qJywKKyAgICAndnNwcm9wcycsCisgICAgXQogCiAjIFRoZSBtYXhpbXVtIG51bWJlciBv
ZiBlcnJvcnMgdG8gcmVwb3J0IHBlciBmaWxlLCBwZXIgY2F0ZWdvcnkuCiAjIElmIGEgY2F0ZWdv
cnkgaXMgbm90IGEga2V5LCB0aGVuIGl0IGhhcyBubyBtYXhpbXVtLgpAQCAtNDA2LDYgKzQxMiw3
IEBAIGNsYXNzIEZpbGVUeXBlOgogICAgIENQUCA9IDEKICAgICBQWVRIT04gPSAyCiAgICAgVEVY
VCA9IDMKKyAgICBYTUwgPSA0CiAKIAogY2xhc3MgQ2hlY2tlckRpc3BhdGNoZXIob2JqZWN0KToK
QEAgLTQ0NSw2ICs0NTIsOSBAQCBjbGFzcyBDaGVja2VyRGlzcGF0Y2hlcihvYmplY3QpOgogICAg
ICAgICAgICAgICAgIHJldHVybiBUcnVlCiAgICAgICAgIHJldHVybiBGYWxzZQogCisgICAgZGVm
IHNob3VsZF9jaGVja19hbmRfc3RyaXBfY2FycmlhZ2VfcmV0dXJucyhzZWxmLCBmaWxlX3BhdGgp
OgorICAgICAgICByZXR1cm4gc2VsZi5fZmlsZV9leHRlbnNpb24oZmlsZV9wYXRoKSBub3QgaW4g
X0NBUlJJQUdFX1JFVFVSTl9BTExPV0VEX0ZJTEVfRVhURU5TSU9OUworCiAgICAgZGVmIF9maWxl
X3R5cGUoc2VsZiwgZmlsZV9wYXRoKToKICAgICAgICAgIiIiUmV0dXJuIHRoZSBmaWxlIHR5cGUg
Y29ycmVzcG9uZGluZyB0byB0aGUgZ2l2ZW4gZmlsZS4iIiIKICAgICAgICAgZmlsZV9leHRlbnNp
b24gPSBzZWxmLl9maWxlX2V4dGVuc2lvbihmaWxlX3BhdGgpCkBAIC00NTksNiArNDY5LDggQEAg
Y2xhc3MgQ2hlY2tlckRpc3BhdGNoZXIob2JqZWN0KToKICAgICAgICAgICAgIHJldHVybiBGaWxl
VHlwZS5DUFAKICAgICAgICAgZWxpZiBmaWxlX2V4dGVuc2lvbiA9PSBfUFlUSE9OX0ZJTEVfRVhU
RU5TSU9OOgogICAgICAgICAgICAgcmV0dXJuIEZpbGVUeXBlLlBZVEhPTgorICAgICAgICBlbGlm
IGZpbGVfZXh0ZW5zaW9uIGluIF9YTUxfRklMRV9FWFRFTlNJT05TOgorICAgICAgICAgICAgcmV0
dXJuIEZpbGVUeXBlLlhNTAogICAgICAgICBlbGlmIChvcy5wYXRoLmJhc2VuYW1lKGZpbGVfcGF0
aCkuc3RhcnRzd2l0aCgnQ2hhbmdlTG9nJykgb3IKICAgICAgICAgICAgICAgKG5vdCBmaWxlX2V4
dGVuc2lvbiBhbmQgIldlYktpdFRvb2xzL1NjcmlwdHMvIiBpbiBmaWxlX3BhdGgpIG9yCiAgICAg
ICAgICAgICAgIGZpbGVfZXh0ZW5zaW9uIGluIF9URVhUX0ZJTEVfRVhURU5TSU9OUyk6CkBAIC00
NzcsNiArNDg5LDggQEAgY2xhc3MgQ2hlY2tlckRpc3BhdGNoZXIob2JqZWN0KToKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZV9zdHlsZV9lcnJvciwgbWluX2NvbmZpZGVu
Y2UpCiAgICAgICAgIGVsaWYgZmlsZV90eXBlID09IEZpbGVUeXBlLlBZVEhPTjoKICAgICAgICAg
ICAgIGNoZWNrZXIgPSBQeXRob25DaGVja2VyKGZpbGVfcGF0aCwgaGFuZGxlX3N0eWxlX2Vycm9y
KQorICAgICAgICBlbGlmIGZpbGVfdHlwZSA9PSBGaWxlVHlwZS5YTUw6CisgICAgICAgICAgICBj
aGVja2VyID0gWE1MQ2hlY2tlcihmaWxlX3BhdGgsIGhhbmRsZV9zdHlsZV9lcnJvcikKICAgICAg
ICAgZWxpZiBmaWxlX3R5cGUgPT0gRmlsZVR5cGUuVEVYVDoKICAgICAgICAgICAgIGJhc2VuYW1l
ID0gb3MucGF0aC5iYXNlbmFtZShmaWxlX3BhdGgpCiAgICAgICAgICAgICBpZiBiYXNlbmFtZSA9
PSAndGVzdF9leHBlY3RhdGlvbnMudHh0JyBvciBiYXNlbmFtZSA9PSAnZHJ0X2V4cGVjdGF0aW9u
cy50eHQnOgpAQCAtNzE4LDEzICs3MzIsOSBAQCBjbGFzcyBTdHlsZVByb2Nlc3NvcihQcm9jZXNz
b3JCYXNlKToKIAogICAgICAgICBjYXJyaWFnZV9jaGVja2VyID0gc2VsZi5fY2FycmlhZ2VfY2hl
Y2tlcl9jbGFzcyhzdHlsZV9lcnJvcl9oYW5kbGVyKQogCi0gICAgICAgICMgRklYTUU6IFdlIHNo
b3VsZCBwcm9iYWJseSB1c2UgdGhlIFNWTiAiZW9sLXN0eWxlIiBwcm9wZXJ0eQotICAgICAgICAj
ICAgICAgICBvciBhIHdoaXRlIGxpc3QgdG8gZGVjaWRlIHdoZXRoZXIgb3Igbm90IHRvIGRvCi0g
ICAgICAgICMgICAgICAgIHRoZSBjYXJyaWFnZS1yZXR1cm4gY2hlY2suIE9yaWdpbmFsbHksIHdl
IGRpZCB0aGUKLSAgICAgICAgIyAgICAgICAgY2hlY2sgb25seSBpZiAob3MubGluZXNlcCAhPSAn
XHJcbicpLgotICAgICAgICAjCiAgICAgICAgICMgQ2hlY2sgZm9yIGFuZCByZW1vdmUgdHJhaWxp
bmcgY2FycmlhZ2UgcmV0dXJucyAoIlxyIikuCi0gICAgICAgIGxpbmVzID0gY2FycmlhZ2VfY2hl
Y2tlci5jaGVjayhsaW5lcykKKyAgICAgICAgaWYgc2VsZi5fZGlzcGF0Y2hlci5zaG91bGRfY2hl
Y2tfYW5kX3N0cmlwX2NhcnJpYWdlX3JldHVybnMoZmlsZV9wYXRoKToKKyAgICAgICAgICAgIGxp
bmVzID0gY2FycmlhZ2VfY2hlY2tlci5jaGVjayhsaW5lcykKIAogICAgICAgICBtaW5fY29uZmlk
ZW5jZSA9IHNlbGYuX2NvbmZpZ3VyYXRpb24ubWluX2NvbmZpZGVuY2UKICAgICAgICAgY2hlY2tl
ciA9IHNlbGYuX2Rpc3BhdGNoZXIuZGlzcGF0Y2goZmlsZV9wYXRoLApkaWZmIC0tZ2l0IGEvV2Vi
S2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2VyX3VuaXR0ZXN0LnB5IGIvV2Vi
S2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2VyX3VuaXR0ZXN0LnB5CmluZGV4
IDk0ZDJjMjkyZmZiMjk4YjhiN2NiZTQ3ZDRmODAxNGE3ZTc5NzRiZGMuLmYzMTAxNDMyZTYxYzMw
ZjM4MWQ4OGViNTdkNjEzYjZhOTUyYjZkMTEgMTAwNzU1Ci0tLSBhL1dlYktpdFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcl91bml0dGVzdC5weQorKysgYi9XZWJLaXRUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJfdW5pdHRlc3QucHkKQEAgLTU1LDYgKzU1LDcg
QEAgZnJvbSBjaGVja2VyIGltcG9ydCBTdHlsZVByb2Nlc3NvckNvbmZpZ3VyYXRpb24KIGZyb20g
Y2hlY2tlcnMuY3BwIGltcG9ydCBDcHBDaGVja2VyCiBmcm9tIGNoZWNrZXJzLnB5dGhvbiBpbXBv
cnQgUHl0aG9uQ2hlY2tlcgogZnJvbSBjaGVja2Vycy50ZXh0IGltcG9ydCBUZXh0Q2hlY2tlcgor
ZnJvbSBjaGVja2Vycy54bWwgaW1wb3J0IFhNTENoZWNrZXIKIGZyb20gZXJyb3JfaGFuZGxlcnMg
aW1wb3J0IERlZmF1bHRTdHlsZUVycm9ySGFuZGxlcgogZnJvbSBmaWx0ZXIgaW1wb3J0IHZhbGlk
YXRlX2ZpbHRlcl9ydWxlcwogZnJvbSBmaWx0ZXIgaW1wb3J0IEZpbHRlckNvbmZpZ3VyYXRpb24K
QEAgLTM0Myw2ICszNDQsMjAgQEAgY2xhc3MgQ2hlY2tlckRpc3BhdGNoZXJTa2lwVGVzdCh1bml0
dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGV4cGVjdGVkPUZhbHNlKQogCiAKK2NsYXNzIENoZWNrZXJEaXNwYXRjaGVy
Q2FycmlhZ2VSZXR1cm5UZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgdGVzdF9zaG91
bGRfY2hlY2tfYW5kX3N0cmlwX2NhcnJpYWdlX3JldHVybnMoc2VsZik6CisgICAgICAgIGZpbGVz
ID0geworICAgICAgICAgICAgJ2Zvby50eHQnOiBUcnVlLAorICAgICAgICAgICAgJ2Zvby5jcHAn
OiBUcnVlLAorICAgICAgICAgICAgJ2Zvby52Y3Byb2onOiBGYWxzZSwKKyAgICAgICAgICAgICdm
b28udnNwcm9wcyc6IEZhbHNlLAorICAgICAgICB9CisKKyAgICAgICAgZGlzcGF0Y2hlciA9IENo
ZWNrZXJEaXNwYXRjaGVyKCkKKyAgICAgICAgZm9yIGZpbGVfcGF0aCwgZXhwZWN0ZWRfcmVzdWx0
IGluIGZpbGVzLml0ZW1zKCk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhkaXNwYXRj
aGVyLnNob3VsZF9jaGVja19hbmRfc3RyaXBfY2FycmlhZ2VfcmV0dXJucyhmaWxlX3BhdGgpLCBl
eHBlY3RlZF9yZXN1bHQsICdDaGVja2luZzogJXMnICUgZmlsZV9wYXRoKQorCisKIGNsYXNzIENo
ZWNrZXJEaXNwYXRjaGVyRGlzcGF0Y2hUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgICIi
IlRlc3RzIGRpc3BhdGNoKCkgbWV0aG9kIG9mIENoZWNrZXJEaXNwYXRjaGVyIGNsYXNzLiIiIgpA
QCAtMzg2LDYgKzQwMSwxMCBAQCBjbGFzcyBDaGVja2VyRGlzcGF0Y2hlckRpc3BhdGNoVGVzdCh1
bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgICIiIkFzc2VydCB0aGF0IHRoZSBkaXNwYXRjaGVk
IGNoZWNrZXIgaXMgYSBUZXh0Q2hlY2tlci4iIiIKICAgICAgICAgc2VsZi5hc3NlcnRfY2hlY2tl
cihmaWxlX3BhdGgsIFRleHRDaGVja2VyKQogCisgICAgZGVmIGFzc2VydF9jaGVja2VyX3htbChz
ZWxmLCBmaWxlX3BhdGgpOgorICAgICAgICAiIiJBc3NlcnQgdGhhdCB0aGUgZGlzcGF0Y2hlZCBj
aGVja2VyIGlzIGEgWE1MQ2hlY2tlci4iIiIKKyAgICAgICAgc2VsZi5hc3NlcnRfY2hlY2tlcihm
aWxlX3BhdGgsIFhNTENoZWNrZXIpCisKICAgICBkZWYgdGVzdF9jcHBfcGF0aHMoc2VsZik6CiAg
ICAgICAgICIiIlRlc3QgcGF0aHMgdGhhdCBzaG91bGQgYmUgY2hlY2tlZCBhcyBDKysuIiIiCiAg
ICAgICAgIHBhdGhzID0gWwpAQCAtNDgzLDYgKzUwMiwyNiBAQCBjbGFzcyBDaGVja2VyRGlzcGF0
Y2hlckRpc3BhdGNoVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWxzKGNoZWNrZXIuZmlsZV9wYXRoLCBmaWxlX3BhdGgpCiAgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWxzKGNoZWNrZXIuaGFuZGxlX3N0eWxlX2Vycm9yLCBzZWxmLm1vY2tfaGFuZGxlX3N0eWxl
X2Vycm9yKQogCisgICAgZGVmIHRlc3RfeG1sX3BhdGhzKHNlbGYpOgorICAgICAgICAiIiJUZXN0
IHBhdGhzIHRoYXQgc2hvdWxkIGJlIGNoZWNrZWQgYXMgWE1MLiIiIgorICAgICAgICBwYXRocyA9
IFsKKyAgICAgICAgICAgIldlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oiLAor
ICAgICAgICAgICAiV2ViS2l0TGlicmFyaWVzL3dpbi90b29scy92c3Byb3BzL2NvbW1vbi52c3By
b3BzIiwKKyAgICAgICAgXQorCisgICAgICAgIGZvciBwYXRoIGluIHBhdGhzOgorICAgICAgICAg
ICAgc2VsZi5hc3NlcnRfY2hlY2tlcl94bWwocGF0aCkKKworICAgICAgICAjIENoZWNrIGNoZWNr
ZXIgYXR0cmlidXRlcyBvbiBhIHR5cGljYWwgaW5wdXQuCisgICAgICAgIGZpbGVfYmFzZSA9ICJm
b28iCisgICAgICAgIGZpbGVfZXh0ZW5zaW9uID0gInZjcHJvaiIKKyAgICAgICAgZmlsZV9wYXRo
ID0gZmlsZV9iYXNlICsgIi4iICsgZmlsZV9leHRlbnNpb24KKyAgICAgICAgc2VsZi5hc3NlcnRf
Y2hlY2tlcl94bWwoZmlsZV9wYXRoKQorICAgICAgICBjaGVja2VyID0gc2VsZi5kaXNwYXRjaChm
aWxlX3BhdGgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGNoZWNrZXIuZmlsZV9wYXRoLCBm
aWxlX3BhdGgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGNoZWNrZXIuaGFuZGxlX3N0eWxl
X2Vycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLm1vY2tfaGFuZGxlX3N0eWxl
X2Vycm9yKQorCiAgICAgZGVmIHRlc3Rfbm9uZV9wYXRocyhzZWxmKToKICAgICAgICAgIiIiVGVz
dCBwYXRocyB0aGF0IGhhdmUgbm8gZmlsZSB0eXBlLi4iIiIKICAgICAgICAgcGF0aHMgPSBbCkBA
IC00OTAsNyArNTI5LDYgQEAgY2xhc3MgQ2hlY2tlckRpc3BhdGNoZXJEaXNwYXRjaFRlc3QodW5p
dHRlc3QuVGVzdENhc2UpOgogICAgICAgICAgICAiZm9vLmFzZGYiLCAgIyBOb24tc2Vuc2ljYWwg
ZmlsZSBleHRlbnNpb24uCiAgICAgICAgICAgICJmb28ucG5nIiwKICAgICAgICAgICAgImZvby5l
eGUiLAotICAgICAgICAgICAiZm9vLnZjcHJvaiIsCiAgICAgICAgICAgICBdCiAKICAgICAgICAg
Zm9yIHBhdGggaW4gcGF0aHM6CkBAIC02MzgsNiArNjc2LDkgQEAgY2xhc3MgU3R5bGVQcm9jZXNz
b3JfQ29kZUNvdmVyYWdlVGVzdChMb2dnaW5nVGVzdENhc2UpOgogICAgICAgICBkZWYgc2hvdWxk
X3NraXBfd2l0aG91dF93YXJuaW5nKHNlbGYsIGZpbGVfcGF0aCk6CiAgICAgICAgICAgICByZXR1
cm4gZmlsZV9wYXRoLmVuZHN3aXRoKCdza2lwX3dpdGhvdXRfd2FybmluZy50eHQnKQogCisgICAg
ICAgIGRlZiBzaG91bGRfY2hlY2tfYW5kX3N0cmlwX2NhcnJpYWdlX3JldHVybnMoc2VsZiwgZmls
ZV9wYXRoKToKKyAgICAgICAgICAgIHJldHVybiBub3QgZmlsZV9wYXRoLmVuZHN3aXRoKCdjYXJy
aWFnZV9yZXR1cm5zX2FsbG93ZWQudHh0JykKKwogICAgICAgICBkZWYgZGlzcGF0Y2goc2VsZiwg
ZmlsZV9wYXRoLCBzdHlsZV9lcnJvcl9oYW5kbGVyLCBtaW5fY29uZmlkZW5jZSk6CiAgICAgICAg
ICAgICBpZiBmaWxlX3BhdGguZW5kc3dpdGgoJ2RvX25vdF9wcm9jZXNzLnR4dCcpOgogICAgICAg
ICAgICAgICAgIHJldHVybiBOb25lCkBAIC03NzcsMyArODE4LDE1IEBAIGNsYXNzIFN0eWxlUHJv
Y2Vzc29yX0NvZGVDb3ZlcmFnZVRlc3QoTG9nZ2luZ1Rlc3RDYXNlKToKICAgICAgICAgc2VsZi5h
c3NlcnRSYWlzZXMoQXNzZXJ0aW9uRXJyb3IsIHNlbGYuX3Byb2Nlc3Nvci5wcm9jZXNzLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICBsaW5lcz1bJ2xpbmUxJywgJ2xpbmUyJ10sIGZpbGVfcGF0
aD1wYXRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lX251bWJlcnM9WzEwMF0pCisK
KyAgICBkZWYgdGVzdF9wcm9jZXNzX19jYXJyaWFnZV9yZXR1cm5zX25vdF9zdHJpcHBlZChzZWxm
KToKKyAgICAgICAgIiIiVGVzdCB0aGF0IGNhcnJpYWdlIHJldHVybnMgYXJlbid0IHN0cmlwcGVk
IGZyb20gZmlsZXMgdGhhdCBhcmUgYWxsb3dlZCB0byBjb250YWluIHRoZW0uIiIiCisgICAgICAg
IGZpbGVfcGF0aCA9ICdjYXJyaWFnZV9yZXR1cm5zX2FsbG93ZWQudHh0JworICAgICAgICBsaW5l
cyA9IFsnbGluZTFccicsICdsaW5lMlxyJ10KKyAgICAgICAgbGluZV9udW1iZXJzID0gWzEwMF0K
KyAgICAgICAgc2VsZi5fcHJvY2Vzc29yLnByb2Nlc3MobGluZXM9bGluZXMsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGZpbGVfcGF0aD1maWxlX3BhdGgsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGxpbmVfbnVtYmVycz1saW5lX251bWJlcnMpCisgICAgICAgICMg
VGhlIGNhcnJpYWdlIHJldHVybiBjaGVja2VyIHNob3VsZCBuZXZlciBoYXZlIGJlZW4gaW52b2tl
ZCwgYW5kIHNvCisgICAgICAgICMgc2hvdWxkIG5vdCBoYXZlIHNhdmVkIG9mZiBhbnkgbGluZXMu
CisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaGFzYXR0cihzZWxmLmNhcnJpYWdlX2NoZWNrZXIs
ICdsaW5lcycpKQpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHls
ZS9jaGVja2Vycy94bWwucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2No
ZWNrZXJzL3htbC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iZDhjNjhhMjdjODIxNWVhNWVjNTY0MTJjYWIyYzRk
ZjVkYmJlODZlCi0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9zdHlsZS9jaGVja2Vycy94bWwucHkKQEAgLTAsMCArMSw0NSBAQAorIyBDb3B5cmlnaHQgKEMp
IDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMg
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAyLiAgUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisjCisjIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycgQU5ECisjIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisjIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyMgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IKKyMgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorIyBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUgorIyBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUgorIyBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorIyBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisiIiJDaGVja3MgV2ViS2l0IHN0eWxlIGZvciBYTUwg
ZmlsZXMuIiIiCisKK2Zyb20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0CisKK2Zy
b20geG1sLnBhcnNlcnMgaW1wb3J0IGV4cGF0CisKKworY2xhc3MgWE1MQ2hlY2tlcihvYmplY3Qp
OgorICAgICIiIlByb2Nlc3NlcyBYTUwgbGluZXMgZm9yIGNoZWNraW5nIHN0eWxlLiIiIgorCisg
ICAgZGVmIF9faW5pdF9fKHNlbGYsIGZpbGVfcGF0aCwgaGFuZGxlX3N0eWxlX2Vycm9yKToKKyAg
ICAgICAgc2VsZi5maWxlX3BhdGggPSBmaWxlX3BhdGgKKyAgICAgICAgc2VsZi5oYW5kbGVfc3R5
bGVfZXJyb3IgPSBoYW5kbGVfc3R5bGVfZXJyb3IKKworICAgIGRlZiBjaGVjayhzZWxmLCBsaW5l
cyk6CisgICAgICAgIHBhcnNlciA9IGV4cGF0LlBhcnNlckNyZWF0ZSgpCisgICAgICAgIHRyeToK
KyAgICAgICAgICAgIGZvciBsaW5lIGluIGxpbmVzOgorICAgICAgICAgICAgICAgIHBhcnNlci5Q
YXJzZShsaW5lKQorICAgICAgICAgICAgICAgIHBhcnNlci5QYXJzZSgnXG4nKQorICAgICAgICAg
ICAgcGFyc2VyLlBhcnNlKCcnLCBUcnVlKQorICAgICAgICBleGNlcHQgZXhwYXQuRXhwYXRFcnJv
ciwgZXJyb3I6CisgICAgICAgICAgICBzZWxmLmhhbmRsZV9zdHlsZV9lcnJvcihlcnJvci5saW5l
bm8sICd4bWwvc3ludGF4JywgNSwgZXJyb3IubWVzc2FnZSkKZGlmZiAtLWdpdCBhL1dlYktpdFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMveG1sX3VuaXR0ZXN0LnB5IGIvV2Vi
S2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy94bWxfdW5pdHRlc3QucHkK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMzgyNTY2MGI3NTNmMDM5MmY0OGI1Yjk2MDFlYjMyZmVjZGM0ZDU5MAotLS0g
L2Rldi9udWxsCisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tl
cnMveG1sX3VuaXR0ZXN0LnB5CkBAIC0wLDAgKzEsNzIgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhv
bgorIworIyBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisjIGFyZSBtZXQ6CisjIDEuICBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
IyAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorIyAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyMgICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisjIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisj
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUKKyMgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKKyMgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAorIyBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUgorIyBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUgorIyBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLAorIyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisiIiJVbml0IHRl
c3QgZm9yIHhtbC5weS4iIiIKKworaW1wb3J0IHVuaXR0ZXN0CisKK2ltcG9ydCB4bWwKKworCitj
bGFzcyBYTUxDaGVja2VyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIiIiVGVzdHMgWE1M
Q2hlY2tlciBjbGFzcy4iIiIKKworICAgIGRlZiBhc3NlcnRfbm9fZXJyb3Ioc2VsZiwgeG1sX2Rh
dGEpOgorICAgICAgICBkZWYgaGFuZGxlX3N0eWxlX2Vycm9yKGxpbmVfbnVtYmVyLCBjYXRlZ29y
eSwgY29uZmlkZW5jZSwgbWVzc2FnZSk6CisgICAgICAgICAgICBzZWxmLmZhaWwoJ1VuZXhwZWN0
ZWQgZXJyb3I6ICVkICVzICVkICVzJyAlIChsaW5lX251bWJlciwgY2F0ZWdvcnksIGNvbmZpZGVu
Y2UsIG1lc3NhZ2UpKQorICAgICAgICBjaGVja2VyID0geG1sLlhNTENoZWNrZXIoJ2Zvby54bWwn
LCBoYW5kbGVfc3R5bGVfZXJyb3IpCisgICAgICAgIGNoZWNrZXIuY2hlY2soeG1sX2RhdGEuc3Bs
aXQoJ1xuJykpCisKKyAgICBkZWYgYXNzZXJ0X2Vycm9yKHNlbGYsIGV4cGVjdGVkX2xpbmVfbnVt
YmVyLCBleHBlY3RlZF9jYXRlZ29yeSwgeG1sX2RhdGEpOgorICAgICAgICBkZWYgaGFuZGxlX3N0
eWxlX2Vycm9yKGxpbmVfbnVtYmVyLCBjYXRlZ29yeSwgY29uZmlkZW5jZSwgbWVzc2FnZSk6Cisg
ICAgICAgICAgICBzZWxmLmhhZF9lcnJvciA9IFRydWUKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWxzKGV4cGVjdGVkX2xpbmVfbnVtYmVyLCBsaW5lX251bWJlcikKKyAgICAgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWxzKGV4cGVjdGVkX2NhdGVnb3J5LCBjYXRlZ29yeSkKKyAgICAgICAgY2hl
Y2tlciA9IHhtbC5YTUxDaGVja2VyKCdmb28ueG1sJywgaGFuZGxlX3N0eWxlX2Vycm9yKQorICAg
ICAgICBjaGVja2VyLmNoZWNrKHhtbF9kYXRhLnNwbGl0KCdcbicpKQorICAgICAgICBzZWxmLmFz
c2VydFRydWUoc2VsZi5oYWRfZXJyb3IpCisKKyAgICBkZWYgbW9ja19oYW5kbGVfc3R5bGVfZXJy
b3Ioc2VsZik6CisgICAgICAgIHBhc3MKKworICAgIGRlZiB0ZXN0X2NvbmZsaWN0X21hcmtlcihz
ZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRfZXJyb3IoMSwgJ3htbC9zeW50YXgnLCAnPDw8PDw8
PCBIRUFEXG48Zm9vPlxuPC9mb28+XG4nKQorCisgICAgZGVmIHRlc3RfZXh0cmFfY2xvc2luZ190
YWcoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0X2Vycm9yKDMsICd4bWwvc3ludGF4JywgJzxm
b28+XG48L2Zvbz5cbjwvZm9vPlxuJykKKworICAgIGRlZiB0ZXN0X2luaXQoc2VsZik6CisgICAg
ICAgIGNoZWNrZXIgPSB4bWwuWE1MQ2hlY2tlcignZm9vLnhtbCcsIHNlbGYubW9ja19oYW5kbGVf
c3R5bGVfZXJyb3IpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGNoZWNrZXIuZmlsZV9wYXRo
LCAnZm9vLnhtbCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGNoZWNrZXIuaGFuZGxlX3N0
eWxlX2Vycm9yLCBzZWxmLm1vY2tfaGFuZGxlX3N0eWxlX2Vycm9yKQorCisgICAgZGVmIHRlc3Rf
bWlzc2luZ19jbG9zaW5nX3RhZyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRfZXJyb3IoMywg
J3htbC9zeW50YXgnLCAnPGZvbz5cbjxiYXI+XG48L2Zvbz5cbicpCisKKyAgICBkZWYgdGVzdF9u
b19lcnJvcihzZWxmKToKKyAgICAgICAgY2hlY2tlciA9IHhtbC5YTUxDaGVja2VyKCdmb28ueG1s
Jywgc2VsZi5hc3NlcnRfbm9fZXJyb3IpCisgICAgICAgIGNoZWNrZXIuY2hlY2soWyc8Zm9vPics
ICc8L2Zvbz4nXSkKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICB1bml0dGVzdC5t
YWluKCkK
</data>
<flag name="review"
          id="67632"
          type_id="1"
          status="+"
          setter="levin"
    />
          </attachment>
      

    </bug>

</bugzilla>